https发ajax请求被浏览器block

原创 zhaoliang  2017-08-11 13:52  阅读 1,253 views 次

手上一个项目最近刚刚切换成https协议,原有的一些请求仍旧是http的Ajax请求,发现好些正常的服务都不能运转了,排查发现Ajax请求全被浏览器block了。

原来,浏览器默认是不允许在HTTPS里面引用HTTP资源的,一般遇到这种情况chrome会在地址栏右边显示一个图标,告诉你mixed content blocked。如果在一个HTTPS页面里动态的引入HTTP资源,比如引入一个js文件或css文件,会被直接block掉的。

众所周知,xmlhttprequest因为安全问题禁止跨域名、跨协议、跨端口号的交互,在HTTPS发ajax请求更不例外,Chrome浏览器使用开发者工具查看NetWork能看到提示信息:Provisional headers are shown,一般来说,看到这个提示说明请求并没有发出去:Provisional headers are shown

通过Console控制台还看到如下信息:

Mixed Content:The page at 'https://xxxxxx' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'httP://xxxxxxx'. This request has been blocked; the content must be served over HTTPS.

https请求http资源

解决方法:

1.如果站内资源,最好通过相对路径的方式引用,或者把引用资源URL里的协议头去掉(如//www.abc.com/xxx)
2.采用相同的协议
3.请求非站内资源,可先写一个站内方法,使用curl中转请求的方式来规避

本文地址:http://blog.58cm.cn:8088/archives/462.html
版权声明:本文为原创文章,版权归 zhaoliang 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

评论已关闭!