C# 如何在启用基本身份验证的情况下启用对Web API中所有源的访问?

C# 如何在启用基本身份验证的情况下启用对Web API中所有源的访问?,c#,asp.net,ajax,asp.net-web-api,C#,Asp.net,Ajax,Asp.net Web Api,我想允许在Web API中启用基本身份验证的情况下访问所有源代码,但每当我尝试通过ajax调用API时,都会出现错误 请求的资源上不存在“Access Control Allow Origin”标头。 (CORS发行) 我尝试了下面提到的代码片段(在webapiconfig中)。 它在localhost中运行良好,但在IIS中托管后,再次出现相同的错误 var corsAttr = new EnableCorsAttribute("*", "*", "*") { SupportsCredenti

我想允许在Web API中启用基本身份验证的情况下访问所有源代码,但每当我尝试通过ajax调用API时,都会出现错误

请求的资源上不存在“Access Control Allow Origin”标头。 (CORS发行)

我尝试了下面提到的代码片段(在webapiconfig中)。 它在localhost中运行良好,但在IIS中托管后,再次出现相同的错误

var corsAttr = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };
config.EnableCors(corsAttr);
我已通过以下链接实现了基本身份验证:

还尝试对上述片段进行注释,并 在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>

我希望我的API应该使用凭据访问,而不考虑来源。

使用下面的命令禁用Chrome中的同一来源策略

1.关闭开关

2.公开赛

3.键入chrome.exe--user data dir=“C:/chrome dev session”--禁用web安全性


并尝试调用API。

使用下面的命令禁用Chrome中的同源策略

1.关闭开关

2.公开赛

3.键入chrome.exe--user data dir=“C:/chrome dev session”--禁用web安全性


并尝试调用API。

有时其他错误会导致
CORS
错误。在我的例子中,我遇到了
CORS
错误,我已经尝试了一切

当我试图用工具监控服务器上的传入请求时,我意识到我的请求根本不会击中服务器


事实上,虽然
CORS
错误使我认为错误是由于应用程序上的配置造成的,但这是一个防火墙问题,整个服务无法访问。在防火墙上正确配置后,CORS错误也消失了

有时其他错误会导致CORS错误。在我的例子中,我遇到了
CORS
错误,我已经尝试了一切

当我试图用工具监控服务器上的传入请求时,我意识到我的请求根本不会击中服务器


事实上,虽然
CORS
错误使我认为错误是由于应用程序上的配置造成的,但这是一个防火墙问题,整个服务无法访问。在防火墙上进行正确配置后,
CORS
错误也消失了

调用被浏览器而不是API阻止。在这种情况下需要做什么?您是否在startup.cs中添加了AllownOrigin()?调用被浏览器而不是API阻止。在这种情况下需要做什么?您是否添加了AllownOrigin())在your startup.cs?非常感谢您回答此问题,我尝试使用此命令,但浏览器显示-您正在使用不受支持的命令行标志:-禁用web安全。稳定与安全将受到影响。我尝试运行API,但它抛出了前面提到的相同错误。另外,如果我们可以进行编码更改,那就更好了。非常感谢您回答这个问题,我尝试使用此命令,但浏览器显示-您使用的是不受支持的命令行标志:-禁用web安全性。稳定与安全将受到影响。我试着运行API,但它抛出了前面提到的相同错误。另外,如果我们能修改编码,那就更好了。
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'); } 
    });
}