strict origin when cross origin 怎么 解决

just now 1
Nature

"strict-origin-when-cross-origin" 是浏览器中的一种 Referrer- Policy(引用者政策),用于控制在跨域请求时浏览器发送的引用信息,以增强安全性。它既是浏览器为了保护用户隐私和安全而采用的策略,也可能导致跨域请求时资源或接口访问出现问题。 解决 "strict-origin-when-cross-origin" 跨域问题,通常有以下几种方法:

  1. 调整 Referrer-Policy 策略:
    • 可以在服务器响应头中设置合适的 Referrer-Policy,比如改为 no-referrer-when-downgrade 或其他适合业务需求的策略,避免 strict-origin-when-cross-origin 造成引用头被限制。
  2. 使用 CORS(跨域资源共享)配置:
    • 在后端服务器配置允许跨域访问的 CORS 头信息,如允许的域(Access-Control-Allow-Origin)、允许的方法、允许的头部信息等。
    • 对于 Spring 框架,可以在 Controller 类或全局配置中添加 @CrossOrigin 注解配置跨域。
    • 允许凭据(allowCredentials)时,Access-Control-Allow-Origin 不能设为通配符。
  3. 使用代理服务器:
    • 通过前端开发服务器或网关代理将请求转发到后端服务器,避免浏览器的跨域限制。
    • 例如使用 Nginx 做反向代理,或者使用前端开发环境的代理配置。
  4. 修改前端请求的 referrerPolicy 设置:
    • 在 fetch 或 XMLHttpRequest 请求中,通过设置 referrerPolicy 选项来控制引用头的发送行为。
  5. 其他注意事项:
    • 确认请求的协议、域名、端口是否一致,跨域策略主要针对这些不同的情况。
    • 针对浏览器插件或浏览器策略限制,也可以通过浏览器配置临时解决(不推荐用于生产)。

综上,解决 strict-origin-when-cross-origin 的跨域问题需要针对 Referrer-Policy 和 CORS 两方面去配置,确保服务器允许跨域访问,同时合理配置请求的引用头策略。具体示例包括 Spring 后端 @CrossOrigin 注解配置和服务器响应头添加 CORS 策略.