【问题标题】:Google Chrome 65 CORS issue谷歌浏览器 65 CORS 问题
【发布时间】:2018-09-05 23:45:07
【问题描述】:

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

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

PUT方法代码sn-p

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

由于我们的 Web 应用在 Chrome 65 更新之前运行良好,因此我从 chrome 65 的发布页面开始对此问题进行调查,我注意到一些人评论说 CORS 不适用于他们的系统。

我看到的第一条评论:

我遇到的第二条评论:

以下代码 sn-ps 是两个 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 上运行。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我点击了您的链接并从下载中运行了该应用程序。我在安装过程中收到以下错误消息;此产品未成功安装:必须安装 IIS 7.0 CoreWebEnginer 和 W3SVC 功能才能使用 Microsoft CORS 模块。
    猜你喜欢
    • 2017-04-27
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多