angular - CORS 策略“访问控制允许来源”IIS
问题描述
我有角度、实体框架和 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 策略阻止:当请求的凭据模式为 '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'。”
在提琴手我可以看到:安全访问控制允许来源:真
看起来这些值没有被添加到给定的标题中。
下一个更改:我为 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 Error 404.0 - Not Found 您要查找的资源已被删除、更改名称或暂时不可用。”现在好些了吗?下一步可能是什么?
解决方案
如果您的localhost
服务器在特定端口上运行,则它必须包含在 中Access-Control-Allow-Origin
,例如http://localhost:8080
.
在浏览器开发者工具 > 网络中检查请求标头并验证Referer
. 这是应该为 设置的 URL Access-Control-Allow-Origin
。
开发者工具 > 网络
配置
<add name="Access-Control-Allow-Origin" value="http://localhost:8080" />
此外,您可能需要设置Access-Control-Allow-Credentials
.
<add name="Access-Control-Allow-Credentials" value="true" />
推荐阅读
- mysql - Laravel 中 `orderBy` 中的条件 `orderBy` 或 `DB::Raw`
- java - 如果传输状态为 206 Partial Content,Chrome 无法加载视频
- python-3.x - 为什么waitKey('x')中'x'的不同值在opencv中给出不同的输出?
- chirp - 运行 example.py 时出现 IO 错误和属性错误
- javascript - 我该如何解决这个三角函数问题
- c# - 在 Azure IoTEdge 的模块中启动长时间运行方法的最佳方式是什么?
- image-processing - UWP:将图像裁剪为圆形
- flutter - Flutter - StatefulWidget 和路由
- javascript - 当有人点击我想要播放声音时
- mysql - 是否可以将经典数据库与一个视图列混合?