Javascript HTTPS获取限制
我已经做了一个脚本,我希望用户插入到他们的Url栏。脚本如下Javascript HTTPS获取限制,javascript,https,Javascript,Https,我已经做了一个脚本,我希望用户插入到他们的Url栏。脚本如下 javascript:x=new XMLHttpRequest();x.open("GET", "http://example.com/page.php?param1=value1¶m2=value2", true); x.send() 唯一的问题是,我希望用户将其放入Url栏的站点是HTTPS站点。由于某种原因,它不工作,因为这一点。这是我在Chrome控制台中遇到的错误: Mixed Content: The p
javascript:x=new XMLHttpRequest();x.open("GET", "http://example.com/page.php?param1=value1¶m2=value2", true); x.send()
唯一的问题是,我希望用户将其放入Url栏的站点是HTTPS站点。由于某种原因,它不工作,因为这一点。这是我在Chrome控制台中遇到的错误:
Mixed Content: The page at 'example.net'; was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'example.com/page.php?param1=value1¶m2=value2';. This request has been blocked; the content must be served over HTTPS.
Example.net是第三方网站,Example.com是我的网站
不管怎样,有没有办法克服这个错误?我找了一整天,但没有成功。谢谢。脚本失败的原因是AJAX请求将在当前页面的上下文中运行。您可能遇到的下一个问题是CORS错误,即使您是通过HTTPS提供内容的 使用以下选项可能是最安全的选择,但它会重定向
window.location = "http://example.com/page.php?param1=value1¶m2=value2";
类似的东西也可以工作,但可能会被弹出窗口阻止程序阻止:
var x = window.open("http://example.com/page.php?param1=value1¶m2=value2");
然后如果你想在一段时间后关闭它,你可以做如下的事情
document.setTimeout(function(){
x.close();
}, 4000);
如果这些解决方案都不适用,我唯一能想到的另一个可行方案是浏览器插件,因为它允许您在浏览器上下文中执行JS。您可以代理请求:您调用的后端中的JS调用和page.php…通过HTTPS提供您的内容?我将如何通过Javascript?在URL中的http之后添加一个s,并配置您的服务器。如果我的页面在发布后重定向回原始页面,这是否明智?很可能-这取决于您试图实现的目标。如果使用window.location,则可能值得使用history.back而不是另一个window.location或HTTP重定向返回页面,因为这将最小化书签对部分填充的页面表单、脚本等的干扰。。我肯定会首先测试window.open方法,因为它可能是入侵性最小的——在Chrome中,至少当它是书签时,它不会触发默认的弹出窗口阻止程序。