如何在https页面异步请求http地址


在做的一个Chrome插件,是在https页面激活的,现在需要请求另外一个http接口,在manifest.json中已经配置了permission,基于jquery的ajax方法。

好吧,上面的背景不重要,现状:
1、在http页面请求http页面,没问题。
2、在https页面请求http页面,有问题,提示 [blocked] The page was loaded over HTTPS, but ran insecure content from '': this content should also be loaded over HTTPS.

问题:如何使用jQuery在https页面请求http接口?和跨域没关,如果需要修改chrome的设置也可以。

jquery jquery-ajax chrome-extension

Inazami 10 years, 8 months ago

我觉得应该是有方法可以请求的,如果是http请求https的话可能有点难,但是https请求http应该是可以的,但是我不知道具体的方法,不好意思

春哥的咆哮 answered 10 years, 8 months ago

这就是所有现代浏览器的安全设置,HTTPS页面里只能请求其它HTTPS的资源,不能使用HTTP。
每个浏览器里都有开关可以取消这个限制,但是这个开关默认都是关闭的。

一般遇到这种情况chrome会在地址栏右边显示一个图标,告诉你mixed content blocked,点击这个图标可以临时允许mixed content,但如果HTTPS网站返回了“ Strict Transport Security” header,Chrome会禁止混合页面,不给用户机会。

幸福的小帐篷 answered 10 years, 8 months ago

自己解决了,在https页面通过post的方式向http页面提交表单是没有问题的,直接的办法就是在页面加一个隐藏的form,然后自动触发提交表单。可以在新窗口提交,或者从当前页面提交,然后在通过服务器端跳转回来。间接实现了在https页面调用http接口的需求。

495年D波纹 answered 10 years, 8 months ago

Your Answer