https的页面中可以发起http的请求吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了https的页面中可以发起http的请求吗相关的知识,希望对你有一定的参考价值。

参考技术A

昨天在面试的时候,最后面试官突然问了一个问题, https的页面中可以发起http的请求吗? 我的回答是 不可以请求,基于 https 的安全性是不可以发起请求的 ,最后面试官又问有没有什么办法可以发起请求,当时没答上来,面试完后赶紧找了下相关的资源,顺便来记录下。

首先来设定一个场景, 自己写的web项目,为什么在https的页面中会出现http请求,按正常的开发流程,主站升级https后,相关的站点都会升级成https的 ,这样说确实没错,但前提是站点里面的内容都是自己管理的,但如果有时候引入其它平台的API或者资源时没有使用https了,这种情况该怎么办呢?所以就出现了 https的页面中可以发起http的请求吗? 这样的问题。

https的页面页中为什么不能发起http请求,有人也行会觉得是同源策略的问题,同源策略的定义是这样的: 1. 协议相同 2. 域名相同 3.端口相同 ,尽管 https 访问 http 确实不符合同源策略中的协议相同,但反过来 http页面中可以使用https请求。 为什么又可以了,其实这不是同源策略的问题,而是跟 混合内容 的问题。
以下内容参考自 MDN

混合内容又分为 主动混合内容 被动混合内容

但有时候就是想在https中发起http请求,碰到这情况会怎么办了?其实可以借助被动混合内容的加载方便来突破这一层限制,使用加载图片的方式来发起请求,如下所示:

以上是关于https的页面中可以发起http的请求吗的主要内容,如果未能解决你的问题,请参考以下文章

Http 与Https

Qt发起Http/Https请求

HTTP与AJAX深入揭秘,不使用AJAX实现页面无刷新

iis7 https 发生413错误 未显示页面,因为请求实体过大

HTTP请求

如何使用Google Volley网络库发起带Header的HTTP请求