1

In my project I have 2 type of controllers

  1. public class BaseApiController : ApiController
  2. public class BaseController : Controller

From Angular I am able to access APIControllers but not able to access Controllers. Getting error for Cross-Origin Request Blocked. Although Cross-Origin is enabled as I can access APIControllers.

var cors = new EnableCorsAttribute(
            origins: "*",
            headers: "*",
            methods: "*");
        config.EnableCors(cors);

Any idea what else settings are required to access Controllers.

Thanks in Advance.

Kartik Goyal
  • 376
  • 1
  • 6
  • 15

1 Answers1

1

I got solution as suggest by @Fitch from this URL. How to enable cross origin requests in ASP.NET MVC

Create a class as below

using System;
using System.Web.Mvc;

public class AllowCrossSiteAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:4200");
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "*");
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");

        base.OnActionExecuting(filterContext);
    }
}

And add attribute like below.

    [Helpers.AllowCrossSite]
    public JsonResult GetDetails()
    {
        return Json(new
        {
            name = "",
            address = "",
            // ... more properties
        }, JsonRequestBehavior.AllowGet);
    }
Kartik Goyal
  • 376
  • 1
  • 6
  • 15
  • 1
    @CaiusJard, No those extra spaces should not be there, looks like something went wrong when posting answer, I have corrected them. – Kartik Goyal Feb 15 '21 at 09:13