繁体   English   中英

Javascript HTTPS GET限制

[英]Javascript HTTPS GET Restriction

我制作了一个脚本,希望用户将其插入到其网址栏中。 该脚本如下。

javascript:x=new XMLHttpRequest();x.open("GET", "http://example.com/page.php?param1=value1&param2=value2", true); x.send()

唯一的问题是,我希望用户将其放入其网址栏的站点是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&param2=value2';. This request has been blocked; the content must be served over HTTPS.

Example.net是第三方网站,example.com是我的网站。

无论如何,有没有办法解决这个错误? 我整天都在搜寻,但没有成功。 谢谢。

脚本失败的原因是AJAX请求将在当前页面的上下文中运行。 即使您通过HTTPS提供内容,您可能遇到的下一个问题是CORS错误。

使用以下代码可能是最安全的选择,但它会重定向。

window.location = "http://example.com/page.php?param1=value1&param2=value2"; 

这样的事情也可以,但是可能会被弹出窗口阻止程序阻止:

var x = window.open("http://example.com/page.php?param1=value1&param2=value2"); 

然后,如果您想稍后将其关闭,则可以执行以下操作

document.setTimeout(function(){
    x.close();

}, 4000);

如果所有这些解决方案都不适合,我可以想到的唯一其他选择是浏览器插件,因为它可以让您在浏览器的上下文中执行JS。

您可以代理请求:js在后端调用https://example.com/page.php和page.php,而在http://example.net/ ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM