"strict-origin-when-cross-origin" 是浏览器中的一种 Referrer- Policy(引用者政策),用于控制在跨域请求时浏览器发送的引用信息,以增强安全性。它既是浏览器为了保护用户隐私和安全而采用的策略,也可能导致跨域请求时资源或接口访问出现问题。 解决 "strict-origin-when-cross-origin" 跨域问题,通常有以下几种方法:
- 调整 Referrer-Policy 策略:
- 可以在服务器响应头中设置合适的 Referrer-Policy,比如改为
no-referrer-when-downgrade
或其他适合业务需求的策略,避免 strict-origin-when-cross-origin 造成引用头被限制。
- 可以在服务器响应头中设置合适的 Referrer-Policy,比如改为
- 使用 CORS(跨域资源共享)配置:
- 在后端服务器配置允许跨域访问的 CORS 头信息,如允许的域(
Access-Control-Allow-Origin
)、允许的方法、允许的头部信息等。 - 对于 Spring 框架,可以在 Controller 类或全局配置中添加
@CrossOrigin
注解配置跨域。 - 允许凭据(
allowCredentials
)时,Access-Control-Allow-Origin
不能设为通配符。
- 在后端服务器配置允许跨域访问的 CORS 头信息,如允许的域(
- 使用代理服务器:
- 通过前端开发服务器或网关代理将请求转发到后端服务器,避免浏览器的跨域限制。
- 例如使用 Nginx 做反向代理,或者使用前端开发环境的代理配置。
- 修改前端请求的 referrerPolicy 设置:
- 在 fetch 或 XMLHttpRequest 请求中,通过设置
referrerPolicy
选项来控制引用头的发送行为。
- 在 fetch 或 XMLHttpRequest 请求中,通过设置
- 其他注意事项:
- 确认请求的协议、域名、端口是否一致,跨域策略主要针对这些不同的情况。
- 针对浏览器插件或浏览器策略限制,也可以通过浏览器配置临时解决(不推荐用于生产)。
综上,解决 strict-origin-when-cross-origin 的跨域问题需要针对 Referrer-Policy 和 CORS
两方面去配置,确保服务器允许跨域访问,同时合理配置请求的引用头策略。具体示例包括 Spring 后端 @CrossOrigin
注解配置和服务器响应头添加 CORS 策略.