我对这些协议(protocol)感到困惑。使用这些协议(protocol)时可以使用哪些请求:
- HTTP 到 HTTP
- HTTPS 到 HTTP
- HTTP 到 HTTPS
- HTTPS 到 HTTPS
我有一个 HTTPS 域和 HTTP 子域。我可以从 HTTPS 请求到 HTTP(POST 和 GET)来检索数据吗?
例如:
$.getJSON('http://api.domainName.com/api/Visitor/GetStates/' + countryId, function(data) {
$.each(data, function(key, value) {
$("#StateId").html($("#StateId").html() +
"<option value='" +
value.StateId +
"'>" +
value.StateName +
"</option>"
);
});
}
此请求发送自:https://domainName.com/
此外,我还解决了子域中的 CORS 问题。
最佳答案
如果原始 html 页面是 https 且请求资源是 http 格式,那么浏览器将无法阻止任何资源( script 、 link 、 iframe 、 XMLHttpRequest 、 fetch )下载。
浏览器抛出混合内容错误。
来自 Mozilla MDN 的片段
混合事件内容是可以访问 HTTPS 页面的全部或部分文档对象模型的内容。这种类型的混合内容可以改变 HTTPS 页面的行为,并可能窃取用户的敏感数据。因此,除了上述混合显示内容的风险之外,混合事件内容还容易受到其他一些攻击媒介的攻击。</p>
在混合事件内容的情况下,中间人攻击者可以拦截 HTTP 内容的请求。攻击者还可以重写响应以包含恶意 JavaScript 代码。恶意事件内容可以窃取用户的凭据、获取有关用户的敏感数据或尝试在用户的系统上安装恶意软件(例如,通过利用浏览器或其插件中的漏洞)。
混合内容涉及的风险确实取决于用户正在访问的网站类型以及该网站暴露的数据的敏感程度。网页可能具有全世界可见的公共(public)数据或仅在经过身份验证时可见的私有(private)数据。如果网页是公开的并且没有有关用户的敏感数据,则使用混合事件内容仍然为攻击者提供了将用户重定向到其他 HTTP 页面并从这些站点窃取 HTTP cookie 的机会。
有用的文档链接
MDN - https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
Google 开发人员 - https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content
关于javascript - https 转 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41137528/