【问题标题】:Web API CORS support not working on httpWeb API CORS 支持不适用于 http
【发布时间】:2015-07-16 02:07:32
【问题描述】:

我在我的 Web API 控制器上启用了 CORS 支持,它在 https 上运行良好,但在 http 上我仍然得到这个 o 'Access-Control-Allow-Origin' 标头出现在请求的资源上 错误。

在 WebApiConfig 中,我使用这一行启用了 cors:

// Allow cross site javascript calls
config.EnableCors();

而我的控制器类是这样介绍的:

 [EnableCors("*","*","*")]
 public class ExternalDataController : ApiController    

那么如何在 http 和 https 上启用 CORS?

当我创建一个调用时,会在 azure raw http 日志中显示以下行:

2015-05-06 05:53:15 ~1PROJECTX GET /diagnostics/settings X-ARR-LOG-ID=d5d487c0-8d32-4103-98cb-37fd7b022942 443 - 137.116.210.73 Portal-Exp/5.11.2.704+(Websites)+Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/537.36+(KHTML%2C+like+Gecko)+Chrome/42.0.2311.90+Safari/537.36+OPR/29.0.1795.47 - - projectx-development.scm.azurewebsites.net 200 0 0 733 1215 3921
2015-05-06 05:53:20 ~1PROJECTX POST /diagnostics/settings X-ARR-LOG-ID=599cb771-d399-49ee-89a2-6804af7c2712 443 - 137.116.210.73 Portal-Exp/5.11.2.704+(Websites)+Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/537.36+(KHTML%2C+like+Gecko)+Chrome/42.0.2311.90+Safari/537.36+OPR/29.0.1795.47 ARRAffinity=a32808ec0f09a64a5ce1705808bf8a2fb0c447c78db8498153641c9469a96a96 - projectx-development.scm.azurewebsites.net 204 0 0 500 1497 156
2015-05-06 05:53:21 ~1PROJECTX GET /diagnostics/settings X-ARR-LOG-ID=6d7bcfd4-aeeb-4c02-9f02-cf5bd54d2189 443 - 137.116.210.73 Portal-Exp/5.11.2.704+(Websites)+Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/537.36+(KHTML%2C+like+Gecko)+Chrome/42.0.2311.90+Safari/537.36+OPR/29.0.1795.47 ARRAffinity=a32808ec0f09a64a5ce1705808bf8a2fb0c447c78db8498153641c9469a96a96 - projectx-development.scm.azurewebsites.net 200 0 0 732 1301 78

【问题讨论】:

  • 请为客户端请求和响应发布 http RAW 标头。您可以使用 fiddler 来获取这些详细信息。此外,您还想检查配置级别是否允许 METHOD 类型。我已经看到默认情况下不允许删除,它也会产生这个问题。
  • 我正在通过以下调用从 jsfiddle 测试软件:$.ajax({ type: "GET", url: "projectx-development.azurewebsites.net/Api/ExternalData/Test" }).done(function (data) { alert( data); }).error(function (jqXHR, textStatus, errorThrown) { });
  • 在 web.config 我已经从 http 重定向到 https ...我认为这会导致问题。

标签: asp.net-web-api cors


【解决方案1】:

您使用 OWIN 吗?只需在您的 Configuration 方法中启用 CORS:

    public void Configuration(IAppBuilder app)
    {
        #region CORS

        app.UseCors(CorsOptions.AllowAll); 

        #endregion 

【讨论】:

  • 实际上我在同一个项目中有 ASP.NET MVC 和 Owin 和 Web API 控制器。我尝试了那个 app.usecors,但仍然没有改善。我不得不删除 config.enablecors 因为它引发了关于多个 x-origin 标头的错误
【解决方案2】:

抱歉,我没有在控制器级别进行检查。

我在 WebApi 配置级别有以下内容,它按预期工作。

 var cors = new EnableCorsAttribute("*", "*", "*") ;
            config.EnableCors(cors);

同样,如果您使用的是基本身份验证,请确保您也设置 SupportsCredentials 值

        var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };

【讨论】:

    猜你喜欢
    • 2014-11-04
    • 2015-09-08
    • 2015-11-18
    • 2015-02-21
    • 2016-06-04
    • 2015-02-11
    • 2013-01-28
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多