【问题标题】:Enabling CORS in ASP.NET MVC在 ASP.NET MVC 中启用 CORS
【发布时间】:2017-10-24 14:13:05
【问题描述】:

我在public class UPWebsiteAPIController : ApiController 之前添加了[System.Web.Http.Cors.EnableCors(origins: "*", headers: "*", methods: "*")],每次我想要POST 数据时,我的函数都应该return new JsonResult { Data = toReturn };。问题是该函数已完全执行并返回 toRerurn 对象,但浏览器得到错误代码 500 和

请求的没有 Access-Control-Allow-Origin 标头 资源

后端代码:

        [System.Web.Http.HttpPost]
    public async Task<System.Web.Mvc.ActionResult> CreateEvent(FormDataCollection formData)
    {
        try
        {
            (code which works fine)
            toReturn[0] = HttpStatusCode.OK;
            return new JsonResult { Data = toReturn };
        }
        catch (Exception ex)
        {
            toReturn[0] = HttpStatusCode.BadRequest;
            return new JsonResult { Data = toReturn };
        }
    }

前端代码:

$.ajax({    
    type: "POST",
    url: 'http://www.XXX.aspnet.pl/api/UPWebsiteAPI/CreateEvent',
    data: data,
    beforeSend: function() {

      $loading.show();

    },

    success: function(response) {
        console.log('sukces');
        console.log(response);

        $loading.hide();
        $response.show();
        $response.find('.pay-button').show();
        $response.find('.pay-link').attr('href', response.Data[1]);

        $response.find('h2').html("Gratulacje!' );

    },
    error: function(response) {
        console.log('error');
        console.log(response);
        $loading.hide();
        $response.show();
        $('.pay-button').hide();
        $response.find('h2').html("Przepraszamy...");
    }
  });

我该怎么办?有趣的是,它有时可以毫无问题地工作,但有时(经常)会出现这些错误。

【问题讨论】:

    标签: asp.net json ajax http-post


    【解决方案1】:

    在您的 global.asax.cs 文件中添加以下方法。

    protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
            {
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE,GET");
    
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "content-type,Access-Control-Allow-Origin,authToken, Accept");
                HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
                HttpContext.Current.Response.End();
            }
        }
    

    【讨论】:

    • 它没有帮助我
    • 您是否使用任何基于令牌的身份验证?
    猜你喜欢
    • 2021-03-08
    • 2020-12-06
    • 2014-09-01
    • 2020-09-02
    • 2015-10-29
    • 2016-08-02
    • 2015-05-19
    • 1970-01-01
    • 2018-02-01
    相关资源
    最近更新 更多