CORS Error: “requests are only supported for protocol schemes: http…” has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present etc
#1 问题描述
根据报错,是跨域的问题,一种安全策略。
网上有比较多解决方案(目标网站添加相关头部、设置anonymous等等 参考之一https://blog.csdn.net/weixin_40647516/article/details/102660374),但是只有以下这种 设置浏览器允许跨域访问 的方案能解决(在我目前的项目里)
#2 设置浏览器允许跨域访问
# 2.1 火狐 firefox
地址栏输入 about.config 进入配置页
搜索”security.fileuri.strict_origin_policy”,设置为false
重启浏览器,即可跨域访问
# 2.2 谷歌 chrome
参考 https://www.cnblogs.com/laden666666/p/5544572.html
版本号49之前的跨域设置
先介绍一下老方法,参考了一些网上的教程,其实直接在打开命令上加--disable-web-security就可以了。
具体做法为:
1.下载并安装好chorme浏览器后在桌面找到浏览器快捷图标并点击鼠标右键的属性一栏。
2.在属性页面中的目标输入框里加上 --disable-web-security 如下图所示:
3.点击应用和确定后关闭属性页面,并打开chrome浏览器。如果浏览器出现提示“你使用的是不受支持的命令标记 --disable-web-security”,那么说明配置成功。
版本号49之后的chrome跨域设置
chrome的版本升到49之后,跨域设置比以前严格了,在打开命令上加--disable-web-security之后还需要给出新的用户个人信息的目录。众所周知chrome是需要用gmail地址登录的浏览器,登录后就会生成一个存储个人信息的目录,保存用户的收藏、历史记录等个人信息。49版本之后,如果设置chrome浏览器为支持跨域模式,需要指定出一个个人信息目录,而不能使用默认的目录,估计是chrome浏览器怕用户勿使用跨域模式泄露自己的个人信息(主要是cookie,很多网站的登录token信息都是保存在cookie里)。
具体做法为:
1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData
2.在属性页面中的目标输入框里加上 --disable-web-security --user-data-dir=C:\MyChromeDevUserData,--user-data-dir的值就是刚才新建的目录。
3.点击应用和确定后关闭属性页面,并打开chrome浏览器。
再次打开chrome,发现有“--disable-web-security”相关的提示,说明chrome又能正常跨域工作了。
# 3 类似的 本地cookie政策
在chrome中不支持js、jq操作本地cookie(比如创建本地cookie,用时会报undefined),也是出于安全考虑。
而firefox没有这个限制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步