我工作的公司有两个Web应用程序,都有自己的Web Api。客户端项目是用AngularJs(版本1.6.9)编写的。自从更新到Google Chrome 65以来,我的公司访问Web API的Web应用程序在执行POST
和PUT
方法时不再有效。 GET
方法运行正常。
这是我在尝试使用PUT
方法更新现有记录时从Chrome 65本地运行我的Web应用程序后开始出现的错误消息:
PUT方法代码段
managerFactory.updateIncidentRole = function (serviceUrl, data) {
return $http.put(serviceUrl + 'api/Manager/UpdateIncidentRole', data);
};
由于我们的网络应用程序在Chrome 65更新之前运行良好,我对此问题的调查始于chrome 65的发布页面,我注意到有些人评论CORS不适用于他们的系统。
以下代码段是如何配置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上运行。
根据我提供的信息(我很乐意根据要求提供更多信息)缺少什么?