我有angular,Entity Framework和MS SQL Server。我需要在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策略阻止:当请求的凭据模式为'include'时,响应中'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”。”
在提琴手中,我可以看到: 安全 Access-Control-Allow-Origin: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-找不到 您要查找的资源已被删除,名称已更改或暂时不可用。 ” 现在好点了吗? 下一步可能是什么?
答案 0 :(得分:0)
如果您的localhost
服务器在特定端口上运行,则必须将其包含在Access-Control-Allow-Origin
中,例如http://localhost:8080
。
在浏览器中开发者工具>网络,检查请求标头并验证Referer
。这是应该为Access-Control-Allow-Origin
设置的URL。
<add name="Access-Control-Allow-Origin" value="http://localhost:8080" />
此外,您可能需要设置Access-Control-Allow-Credentials
。
<add name="Access-Control-Allow-Credentials" value="true" />