【发布时间】:2019-03-15 17:24:36
【问题描述】:
我的 API 托管在与将访问它的 Web 应用程序不同的 URL 上。我目前已将 CORS 配置为允许我的 API 启动中的所有内容:
配置服务:
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]
我在这里遗漏了什么,需要进行哪些调整才能使其正常工作?
【问题讨论】:
标签: javascript .net reactjs asp.net-core-webapi