我正在尝试向本地.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的主体无关。
答案 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");