我的API托管在与将访问它的web应用程序不同的url上。我目前已经将CORS配置为允许API启动中的所有内容:
ConfigureServices:
services.AddCors(options => {
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
配置:
app.UseCors("CorsPolicy");
app.UseMvc();
如果我在浏览器中输入API URL,它会很好地返回请求,并按预期返回数据。
但是当我尝试使用javascript进行API调用时,如下所示:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/Controller');
xhr.onload = function () {
if (xhr.status === 200) {
alert('Response is ' + xhr.responseText);
console.log('Response is ' + xhr.responseText);
}
else {
alert('Request failed. Returned status of ' + xhr.status);
console.log('Request failed. Returned status of ' + xhr.status);
}
};
xhr.send();
它失败了,并且我在我的控制台中得到以下错误消息:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the
remote resource at https://api.example.com/Controller. (Reason: CORS header
‘Access-Control-Allow-Origin’ missing).[Learn More]
我在这里遗漏了什么,需要调整什么才能使它工作?
发布于 2018-10-11 06:01:04
这被证明是我的API中的一个错误,我调用的方法抛出了一个500。我仍然不明白为什么Firefox控制台将此报告为CORS问题,但这似乎是事实。一旦我修复了这个错误,消息就消失了
https://stackoverflow.com/questions/52746327
复制相似问题