谷歌浏览器 65 CORS 问题
Posted
技术标签:
【中文标题】谷歌浏览器 65 CORS 问题【英文标题】:Google Chrome 65 CORS issue 【发布时间】:2018-09-05 23:45:07 【问题描述】:我工作的公司有两个 Web 应用程序,并且都有自己的 Web Api。客户端项目是用 AngularJs(1.6.9 版)编写的。自从 Google Chrome 65 更新以来,我公司访问 Web API 的 Web 应用程序在执行 POST
和 PUT
方法时不再工作。 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 上运行。
根据我提供的信息(我很乐意根据要求提供更多信息)缺少什么?
【问题讨论】:
【参考方案1】:您可以安装 IIS Cors 模块并对其进行配置
https://www.iis.net/downloads/microsoft/iis-cors-module
【讨论】:
我点击了您的链接并从下载中运行了该应用程序。我在安装过程中收到以下错误消息;此产品未成功安装:必须安装 IIS 7.0 CoreWebEnginer 和 W3SVC 功能才能使用 Microsoft CORS 模块。以上是关于谷歌浏览器 65 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
解决win10系统打开谷歌浏览器(Google Chrome 版本:65.0.3325.181)第一