【发布时间】:2019-09-21 00:19:17
【问题描述】:
我想通过在 Web API 中启用基本身份验证来允许访问所有来源,但是每当我尝试通过 ajax 调用 API 时,它都会给出错误说明
请求的资源上不存在“Access-Control-Allow-Origin”标头。 (CORS 问题)
我尝试了下面提到的 sn-p(在 webapiconfig 中)。 它在 localhost 中运行良好,但在 IIS 中托管后又出现同样的错误。
var corsAttr = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };
config.EnableCors(corsAttr);
我已经从以下链接实现了基本身份验证:
https://www.c-sharpcorner.com/blogs/basic-authentication-in-webapi
还尝试评论上述 sn-p 和 在 Web.config 中添加以下行,但这也失败了
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Authorization, Content-Type"/>
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE"/>
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
AJAX 调用:
function post()
{
var data = {xyz};
$.ajax({
url : 'http://localhost:8080/api/demo',
type: 'POST',
dataType: 'json',
data: data,
headers: { 'Authorization': 'Basic ' + btoa('abc' + ":" + 'xyz') },
success: function (response) {
alert('Success');
},
error: function (response) { alert('Error'); }
});
}
我希望无论来源如何,都应该使用凭据访问我的 API。
【问题讨论】:
-
调用被浏览器而不是API阻止。
-
这种情况下需要做什么
-
你是否在你的 startup.cs 中添加了 AllowAnyOrigin() ?
标签: c# asp.net ajax asp.net-web-api