<rule name="HTTP重定向" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
这个是webconfig重定向配置。
现在的问题是,如果浏览器输入只有域名的地址,比如www.xx.com或http:www.xx.com能正常重定向到https:www.xx.com/login(配置了login为起始页)。
但是如果输入带路由url的路径,比如http://www.xx.com/login%E6%88%96http://www.xx.com/login%E3%80%82%E6%B5%8F%E8%A7%88%E5%99%A8%E5%B0%B1%E7%9B%B4%E6%8E%A5%E7%99%BD%E5%B1%8F%E6%8E%A7%E5%88%B6%E5%8F%B0%E6%8A%A5%E9%94%99Access to script at 'https://www.xx.com/assets/index.b19061cf.js' from origin 'http://www.xx.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
然后我把这个重定向禁用后后。www.xx.com也开始报这个重定向错误了,我有点懵了,咋回事啊~~~
http 重定向到 https本来就会跨域 协议都不同 建议修改域名 到 同域下
应该是https未配置跨域设置的问题,将https站点设置crossdomain.xml跨域选项接口。例如:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
<site-control permitted-cross-domain-policies="all"/>
</cross-domain-policy
我看了你的webconfig重定向配置,发现你没有设置Access-Control-Allow-Origin头,这可能导致浏览器拒绝跨域请求,报错CORS policy错误。你可以尝试在webconfig中添加这个头,指定允许的域名,例如:
<add name=“Access-Control-Allow-Origin” value=“https://www.xx.com” />
CORS跨域,设置一些CORS相关的响应头,要确保服务端能够正确响应OPTIONS请求,返回正确的CORS头,或者通过nginx等代理服务器
Web.config中的重定向配置旨在将非HTTPS的请求重定向到对应的HTTPS地址,但遇到了跨域资源共享(CORS)错误,需要添加适当的CORS响应头部以解决,像我的代码一样试试就行
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
在Web服务器上配置CORS:根据使用的Web服务器,可以配置CORS以允许跨域请求在Apache服务器上,可以通过添加Access-Control-Allow-Origin头部到HTTP响应中来允许跨域请求。如果无法直接配置服务器设置CORS头部,可以考虑使用代理服务器。
可以使用nginx代理
当在IIS中部署Vue.js应用程序,并将HTTP重定向到HTTPS时,可能会遇到跨域问题。这是由于浏览器的安全策略所致,当从一个域(HTTP)重定向到另一个域(HTTPS)时,浏览器会将其视为不同的来源,从而触发跨域限制。
要解决这个问题,您可以尝试以下方法:
配置CORS(跨源资源共享):在您的Vue.js应用程序的服务器端,配置CORS标头,允许来自HTTPS域的请求。在您的后端服务器上,添加合适的CORS配置,以允许从HTTP重定向到的HTTPS域进行跨域请求。这样,浏览器就可以正确处理跨域请求。
使用相对URL:在Vue.js应用程序中,使用相对URL来引用资源和API。使用相对URL可以避免在重定向过程中引起跨域问题。确保您的Vue.js应用程序中的URL是相对于应用程序的根路径,而不是绝对路径。
设置IIS URL重写规则:在IIS中,您可以设置URL重写规则,将所有HTTP请求重定向到HTTPS,并在重定向时添加相应的CORS标头。通过将CORS标头添加到重定向响应中,浏览器将知道在重定向后继续信任跨域请求。
使用代理服务器:设置一个代理服务器,将HTTP请求转发到Vue.js应用程序的HTTPS地址上。代理服务器可以处理HTTP到HTTPS的重定向,并在重定向时添加必要的CORS标头。
请根据您的具体情况选择适合的解决方案。确保在部署之前测试和验证您的解决方案,以确保它可以正确处理HTTP到HTTPS的重定向和跨域请求。
在IIS中设置允许跨域:打开IIS管理器,找到出现跨域问题的网站或应用程序,然后右键点击“属性”。在属性窗口中,选择“目录安全性”选项卡,然后点击“自定义允许访问控制”。在弹出的“自定义允许访问控制”窗口中,添加允许跨域的URL,例如:
;*.example.com
注意,将“*.”替换为您的实际域名。
在VUES中设置允许跨域:在VUES的配置文件中,找到“serverUrl”和“baseUrl”属性,将它们修改为https协议的URL,例如:
serverUrl: "https://example.com/api"
baseUrl: "https://example.com"
注意,将“example.com”替换为您的实际域名。