后端设置跨域:
Access-Control-Allow-Origin: *
Access-Control-Allow-Private-Network: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
//跨域请求成功的关键条件
//服务器返回正确的 CORS 头:
//Access-Control-Allow-Origin: https://your-frontend.com//允许前端请求的域名
//Access-Control-Allow-Methods: GET, POST, OPTIONS //允许前端请求的方法
//Access-Control-Allow-Headers: Content-Type, Authorization //允许前端请求的头
//Access-Control-Allow-Private-Network: true//允许前端请求私有网络访问Chrome 94及更高版本中引入,要求从非安全上下文(HTTP)访问私有网络(如localhost)时,需要明确的权限。
//前端不设置非法请求头(如 Access-Control-Allow-Origin)。
//如果携带凭证(cookie/token),需同时满足:
//前端:xhrFields: { withCredentials: true }
//后端:Access-Control-Allow-Credentials: true
//后端:Access-Control-Allow-Origin 不能为 *,必须指定具体域名。
后端设置了跨域但是还是提示跨域问题,原因是这里有两个独立的安全策略在起作用:Chrome和Edge浏览器安全策略强制修改方案
方案1:强制修改浏览器安全策略(Chrome标志)
这是最快解决您当前问题的方法:
1、打开Chrome,访问:chrome://flags,搜索以下标志并设置为"Disabled":
Block insecure private network requests - 设置为 Disabled
Insecure origins treated as secure - 添加 如:http://166.238.1.68:26666 ,访问主页的地址----IP:Port,如:http://166.238.1.68:26666这个就是主页网址
Private network access checks for navigation requests - 设置为 Disabled
2、重启Chrome
方案2:通过Edge flags修改
打开Edge实验功能页面:edge://flags/
1、搜索并修改以下关键flags:
搜索并设置为 Disabled
- Block insecure private network requests → Disabled
- Insecure origins treated as secure → Enabled,然后添加 如:http://166.238.1.68:26666
- Private network access checks for navigation requests → Disabled
其他相关flags
- Allow invalid certificates for resources loaded from localhost → Enabled
- Insecure downloads → Enabled