【问题标题】:How to enable access to all origins in Web API with basic authentication enabled?如何在启用基本身份验证的情况下启用对 Web API 中所有来​​源的访问?
【发布时间】: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


【解决方案1】:

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

1.关闭 Chrome。

2.打开运行。

3.Type chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

并尝试调用 API。

【讨论】:

  • 非常感谢您回答这个问题,我尝试使用此命令,但浏览器显示 - 您正在使用不受支持的命令行标志:--disable-web-security。稳定性和安全性将受到影响。我尝试运行 API,但它抛出了相同的上述错误。
  • 另外,如果我们可以进行编码更改会更好。
【解决方案2】:

有时其他错误会导致CORS 错误。就我而言,我正在为CORS 错误而苦苦挣扎,我已经尝试了所有方法。

当我尝试使用 wireshark 工具监控服务器上的传入请求时,我意识到我的请求根本没有到达服务器。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2018-06-03
    相关资源
    最近更新 更多