从React到.NET Core Web API进行POST时如何解决CORS错误?

时间:2019-06-17 02:06:36

标签: javascript .net reactjs cors policy

我正在尝试向本地.NET Core Web API发出POST和GET请求。今天,我第一次了解了CORS问题,只需安装名为“ Allow-Control-Allow-Origin:*”的Google Chrome扩展程序,我就能获得GET请求。

但是,由于CORS策略,我的POST请求每次都会失败。这太烦人了,我找不到简单或可靠的解决方法。我不太想让CORS在每种浏览器中都能工作。即使我可以单独使用它,也可以拯救生命。

我环顾四周,还没有一种简化的解决方案对我有用。

在我的React App中,对Web API的调用看起来像这样。

axios.post('https://localhost:44395/api/record/create', { Status: "Initiated", Owner: "Peter Porcupine", DateTimeCreated: new Date().getTime(), LastTimeCreated: new Date().getTime(), Comment: { TimeStamp: new Date().getTime(), Text: "Comment sent to API." }})
    .then(response => {
      console.log("Response below from post request");
      console.log(response);
    });

该调用返回404,并且我还收到以下错误: 从源'https://localhost:44395/api/record/create'处对'http://localhost:3000'处XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。

我尝试使用具有类似正文的Postman发出POST请求,该请求有效并更新了我的数据库。我确定这与我发送API的主体无关。

1 个答案:

答案 0 :(得分:0)

您的服务器应该正在发送响应。必须更改该响应的标题才能使CORS正常工作。

在向客户端发送响应时添加以下三行:

context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
context.Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, 
OPTIONS,DELETE");
context.Response.Headers.Add("Access-Control-Allow-Headers", "Origin, Content-Type, 
Accept");