CORS POST Requests not working - OPTIONS (Bad Request) - The origin is not allowed

后端 未结 5 1520
不思量自难忘°
不思量自难忘° 2020-12-13 19:01

I\'m having a lot of trouble getting a cross domain POST request to hit an Api controller in the latest beta 2 release.

Chrome (and other browsers) spit out:

5条回答
  •  伪装坚强ぢ
    2020-12-13 19:53

    I have an MVC controller (not an ApiController) but the solution I came up with may help others. To allow cross domain access to a POST action (/data/xlsx) on the controller I implemented 2 actions:

    1. for the pre-flight check
    2. for the post

    If you don't have the HttpOptions action then you get 404's on the pre-flight check.

    Code:

    [HttpOptions]
    public ActionResult Xlsx()
    {
        // Catches and authorises pre-flight requests for /data/xlsx from remote domains
        Response.AddHeader("Access-Control-Allow-Origin", "*");
        Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        Response.AddHeader("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
        return null;
    }
    
    [HttpPost]
    public ActionResult Xlsx(string data, string name)
    {
        Xlsx(); // Add CORS headers
    
        /* ... implementation here ... */
    }
    

    I've tested it in IE 11, Chrome, FireFox.

提交回复
热议问题