为什么加了CrossOrigin还是报错strict-origin-when-cross-origin
时间: 2023-10-10 12:04:57 浏览: 237
"strict-origin-when-cross-origin" 错误通常是由于请求头中的 "Referer" 字段被浏览器设置为了安全限制而导致的。在使用跨域资源请求时,浏览器会发送 "Referer" 字段,但是该字段可能会因为跨域而被设置为 "strict-origin-when-cross-origin",这会导致资源请求失败。
为解决该问题,您可以尝试在请求中添加 "referrerPolicy" 字段,将其设置为 "no-referrer-when-downgrade" 或 "origin",这将不会发送 "Referer" 字段,从而避免了 "strict-origin-when-cross-origin" 错误的发生。具体实现方式可以参考所使用的请求库的文档。
相关问题
后端加了@CrossOrigin还是报错strict-origin-when-cross-origin、
@CrossOrigin注解是用来解决跨域问题的,但是它只能解决简单跨域请求,如果是复杂跨域请求,例如在请求头中添加了自定义的header信息,那么就需要进行更多的配置。
如果你已经加了@CrossOrigin注解,但是还是出现了strict-origin-when-cross-origin的错误,那么可能是因为你的请求头中添加了自定义的header信息,导致浏览器认为这是一个复杂跨域请求。此时,你需要在后端进行更多的配置来解决这个问题。
具体的解决方法可以参考以下链接:
https://stackoverflow.com/questions/41328353/cors-origin-header-issue-when-making-request-from-front-end-to-back-end
vue前端报错 strict-origin-when-cross-origin
引用[1]中提到的报错"strict-origin-when-cross-origin"是由浏览器的安全策略引起的。这个报错通常发生在前端使用HTTPS协议访问后端使用HTTP协议的接口时。
浏览器的安全策略要求在使用HTTPS协议的网页中,所有的资源请求(包括接口请求)都必须使用HTTPS协议。如果前端使用HTTPS协议访问后端使用HTTP协议的接口,浏览器会认为这是一个跨域请求,并且会按照安全策略进行处理,其中一种处理方式就是报错"strict-origin-when-cross-origin"。
解决这个问题的方法有两种:
. 将后端的接口也改为使用HTTPS协议。这样前端和后端的协议就一致了,不会触发跨域请求的安全策略。
2. 在前端的请求中添加跨域请求头。可以在请求中添加"Access-Control-Allow-Origin"头,将其值设置为"*",表示允许来自任意域名的请求。这样浏览器就不会对跨域请求进行安全策略的处理了。
下面是一个示例代码,演示如何在前端请求中添加跨域请求头:
```javascript
fetch('http://后端接口地址', {
method: 'GET',
headers: {
'Access-Control-Allow-Origin': '*'
}
})
.then(response => response.json())
.then(data => {
// 处理返回的数据
})
.catch(error => {
// 处理请求错误
});
```
阅读全文