如何在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的设置也可以。

阅读 50.9k
3 个回答

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

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

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

新手上路,请多包涵

chrome插件下,如果想ajax在一个https的页面请求另一个http的页面。可以把ajax的操作放在background扩展区进行,就不存在ssl的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏