有人可以帮助我,转换下面的代码,以便在IIS 7.5中的web.config中使用,在web.config文件中我应该放置每段代码吗?
# Always set these headers.
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
# Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
答案 0 :(得分:23)
如果您要求解决 CORS 问题,可以按照以下解决方案进行操作。
注意:在添加所有这些之前,您应该考虑安全问题。
将此添加到您的web.config文件中:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true"/>
<add name="Access-Control-Allow-Headers" value="X-Requested-With, origin, content-type, accept" />
</customHeaders>
</httpProtocol>
</system.webServer>
如果您有Content-type ajax 调用中的参数或您正在执行PUT请求。请注意 被视为 PreFlight requests.Preflight请求正在执行 发送主要请求(PUT,DELETE等)之前 OPTION 请求。你可以 将以下方法添加到您的global.asax文件中以成功传递OPTION过程:
protected void Application_BeginRequest()
{
if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
{
Response.Flush();
}
}
要了解有关预检请求的更多信息,您可以查看here
对于2号解决方案,您可以获得here
的详细信息
答案 1 :(得分:1)
需要考虑一些更新,因为 Chrome 现在添加了strict-origin-when-cross-origin 作为默认的referrer-policy,所以如果你没有在web.config 中设置referrer 策略,你可能仍然会遇到CORS 问题。这是针对远程服务器测试本地主机测试程序时对我有用的设置(不建议将这些设置用于生产):
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Referrer-Policy" value="no-referrer" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true"/>
<add name="Access-Control-Allow-Headers" value="X-Requested-With, origin, content-type, accept" />
</customHeaders>
</httpProtocol>
</system.webServer>