接口请求403报错strict-origin-when-cross-origin
时间: 2023-11-01 11:57:42 浏览: 63
strict-origin-when-cross-origin是一种安全策略,它是浏览器对跨域请求的一种保护机制。当你的前端页面通过https进行访问,而接口请求却是通过http时,就会触发这个报错。这是因为浏览器默认只允许在同源下进行跨域请求。
解决方法是将接口请求也改为https,以保持同源的安全性。你可以检查你的接口请求是否使用了正确的协议,并且确保服务器也配置了正确的https证书。
此外,关于你提到的往返缓存插件Back-forward cache的问题,它的强制缓存模式可能会导致Strict-origin-when-cross-origin的报错。你可以在Chrome浏览器的设置中修改该插件的模式,选择除了Default和Enable force caching all pages以外的其他模式来解决该问题。
关于443端口状态的检查和重新加载防火墙配置,你可以使用命令firewall-cmd --add-port=443/tcp --zone=public --permanent来查看和设置443端口的状态。
相关问题
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 => {
// 处理请求错误
});
```
为什么加了CrossOrigin还是报错strict-origin-when-cross-origin
"strict-origin-when-cross-origin" 错误通常是由于请求头中的 "Referer" 字段被浏览器设置为了安全限制而导致的。在使用跨域资源请求时,浏览器会发送 "Referer" 字段,但是该字段可能会因为跨域而被设置为 "strict-origin-when-cross-origin",这会导致资源请求失败。
为解决该问题,您可以尝试在请求中添加 "referrerPolicy" 字段,将其设置为 "no-referrer-when-downgrade" 或 "origin",这将不会发送 "Referer" 字段,从而避免了 "strict-origin-when-cross-origin" 错误的发生。具体实现方式可以参考所使用的请求库的文档。