我想允许在Web API中启用基本身份验证的情况下访问所有源,但是每当我尝试通过ajax调用API时,都会显示错误消息
所请求的资源上没有“ Access-Control-Allow-Origin”标头。
(CORS问题)
我尝试了以下提到的代码段(在webapiconfig中)。 在localhost上运行正常,但是在IIS中托管后,再次出现相同错误。
var corsAttr = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };
config.EnableCors(corsAttr);
我已经从下面的链接实现了基本身份验证:
https://www.c-sharpcorner.com/blogs/basic-authentication-in-webapi
还尝试评论上述代码段,并 在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。
答案 0 :(得分:0)
使用以下命令在Chrome中禁用相同的来源策略。
1。关闭Chrome。
2。打开运行。
3。输入chrome.exe --user-data-dir =“ C:/ Chrome开发者会话” --disable-web-security
并尝试调用API。
答案 1 :(得分:0)
有时其他错误会导致CORS
错误。就我而言,我在遇到CORS
错误的情况下,已经尝试了所有方法。
当我尝试使用wireshark工具监视服务器上的传入请求时,我意识到我的请求根本不会到达服务器。
实际上,尽管CORS
错误使我认为错误是由于应用程序上的配置引起的,但这是防火墙问题,无法访问整个服务。在防火墙CORS
上进行正确的配置后,错误也消失了