.net - 如何通过授权在 IIS 重写中添加 cors 设置?
问题描述
我想在 IIS 中创建一个重写规则。我想向 mydomain.com 发送请求,但使用授权。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="api">
<match url="^api/(.*)" />
<action type="Rewrite" url="https://example.com/api/{R:1}" />
<serverVariables>
<set name="HTTP_Authorization" value="Basic c13546tYW4uaASWJh79864L=" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<clear />
<rule name="api">
<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTP_ORIGIN}" pattern="(.*)" />
</conditions>
<action type="Rewrite" value="{C:0}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
这是有效的。但是当我使用 javascript ajax 发送请求时,它会引发异常。(我的 javascript 应用程序在 'http://127.0.0.1:1265' 上运行)
来自原点“http://127.0.0.1:1265”的 CORS 策略已阻止:在预检响应中 Access-Control-Allow-Headers 不允许请求标头字段授权。
解决方案
您的第一条规则匹配太多请求,因此您必须对其进行修改以至少排除所有 CORS 预检请求,因为根据标准,这些预检请求必须是匿名的并且没有授权标头(如错误消息所示)。
推荐阅读
- mongodb - 如何在mongodb中查询过去六个月的日期
- azure - 在 AKS 群集下的 devspaces 中运行应用程序时出现问题
- amazon-web-services - 我可以使用 aws 中的 ssl 而不是让地址(ip)本身加密吗?
- perl - 我们可以使用不带前缀的 perl 包变量,只在该包中使用范围吗?
- php - Copy and paste values from 2 differents db with a button
- pm2 - 如何使用 pm2 启动带有 AutoReload 的strapi?
- python - 将 numpy memmap 保存到新文件并从该文件加载新的 memmap 会导致值更改
- python - 如何在 Google App Engine 中设置 Kafka 客户端
- android - 带有导航组件的 DialogFragment(方向问题)
- python - 将scrapy与Cherrypy一起使用?