背景:今天线上有个问题就是。chrome加载不安全脚本的提示,组织了页面的显示。
原因:是请求跨域导致的。
跨域的集中方式:
http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)
http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)
http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。
最后找到了一个解决方案:
官方说明:DeprecatingPowerful Features on Insecure Origins
该限制针对46以上版本
通过命令行参数运行chrome可以解除该限制。
1. Windows:(该操作可能会被安全软件阻止)
右键Chrome快捷方式,然后点击“属性”,将命令行参数添加在“目标”栏的最后面即可,注意与主程序(Chrome.exe)之间有一个空格,命令行参数如下:(红字参数需手动修改)
--unsafely-treat-insecure-origin-as-secure="http://ip:port" --user-data-dir=D:\xxx |
2. 注:目前武汉中旗心电诊断ip、port:http://39.108.91.60:80
- Mac:
a.打开Terminal 进入终端状态,默认的提示符应该是 $;
b.进入Chrome.app 目录;
$ cd "/Applications/Google Chrome.app/Contents/MacOS/" |
c.将原先的启动脚本改个名字;
$ sudo mv "Google Chrome" Google.real |
d.使用管道操作创建新的启动脚本,注意其中加入你所需要的启动参数(红字参数需手动修改)
$ sudo printf '#!/bin/bash\ncd "/Applications/Google Chrome.app/Contents/MacOS"\n"/Applications/Google Chrome.app/Contents/MacOS/Google.real" --unsafely-treat-insecure-origin-as-secure="http://ip:port” --user-data-dir=/xxxx/xxx/xxxx "$@"\n' > Google\ Chrome |
e.给新的脚本加上运行权限;
$ sudo chmod u+x "Google Chrome" |