Google Chrome 65 CORS问题

时间:2018-03-27 14:04:01

标签: api google-chrome asp.net-web-api cors

我工作的公司有两个Web应用程序,都有自己的Web Api。客户端项目是用AngularJs(版本1.6.9)编写的。自从更新到Google Chrome 65以来,我的公司访问Web API的Web应用程序在执行POSTPUT方法时不再有效。 GET方法运行正常。

这是我在尝试使用PUT方法更新现有记录时从Chrome 65本地运行我的Web应用程序后开始出现的错误消息:

Console Errors - CORS issues

Network Header

PUT方法代码段

managerFactory.updateIncidentRole = function (serviceUrl, data) {
    return $http.put(serviceUrl + 'api/Manager/UpdateIncidentRole', data);
};

由于我们的网络应用程序在Chrome 65更新之前运行良好,我对此问题的调查始于chrome 65的发布页面,我注意到有些人评论CORS不适用于他们的系统。

我遇到的第一条评论: Nuke Dukem's comment about CORS policies

我对面的第二条评论: Matteo Costantini's CORS issue

以下代码段是如何配置Web Api的:

WebApiConfig.cs

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

的Web.config

  <system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
  </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
          <remove name="TRACEVerbHandler" />
          <remove name="OPTIONSVerbHandler" />
          <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
    </system.webServer>

Angular模块配置使用$ httpProvider提供带有凭据的$ http请求

$httpProvider.defaults.withCredentials = true;

我正处于这个问题的最后阶段,因为过去一周我一直在谷歌搜索CORS,试图了解可能缺少的内容,以便让Web应用再次在Google Chrome上运行。

根据我提供的信息(我很乐意根据要求提供更多信息)缺少什么?

1 个答案:

答案 0 :(得分:0)

您可以安装IIS Cors模块并对其进行配置

https://www.iis.net/downloads/microsoft/iis-cors-module