【发布时间】:2019-12-18 03:23:00
【问题描述】:
我有 angular、Entity Framework 和 MS SQL 服务器。我需要在 MS IIS 上设置后端,因为我需要进行域身份验证。 不幸的是,我仍然遇到 CORS 问题。
当我的 web.config 文件中有:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
我进入浏览器: “已被 CORS 策略阻止:'Access-Control-Allow-Origin' 标头的值 'http://localhost' 不等于提供的来源”
当我将其更改为:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
我得到: “已被 CORS 策略阻止:当请求的凭据模式为“包含”时,响应中的“Access-Control-Allow-Origin”标头的值不能是通配符“*”。由发起的请求的凭据模式XMLHttpRequest 由 withCredentials 属性控制。”
知道我应该改变什么吗?
接下来的变化:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
浏览器错误:“已被 CORS 策略阻止:'Access-Control-Allow-Origin' 标头包含无效值 'true'。”
在提琴手我可以看到: 安全 访问控制允许来源:true
看起来值没有被添加到给定的标题中。
下一个更改:我为 IIS 安装了 CORS 模块,文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<cors enabled="true" failUnlistedOrigins="true">
<add origin="http://localhost:4200"
allowCredentials="true"
maxAge="120">
<allowHeaders allowAllRequestedHeaders="true">
<add header="header1" />
</allowHeaders>
<allowMethods>
<add method="GET, POST" />
</allowMethods>
</add>
</cors>
</system.webServer>
</configuration>
现在浏览器中的答案是: “HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、名称已更改或暂时不可用。 " 现在好点了吗? 下一步可能是什么?
【问题讨论】:
-
查看更新以验证请求标头以设置正确的
Origin。