Javascript 非https的jQuery.get,在用户脚本中
我在我的网站上制作了一个脚本,可以访问不同网站上的表。然而,另一个网站是HTTP,所以chrome告诉我“此请求已被阻止;内容必须通过HTTPS提供。”Javascript 非https的jQuery.get,在用户脚本中,javascript,jquery,greasemonkey,tampermonkey,Javascript,Jquery,Greasemonkey,Tampermonkey,我在我的网站上制作了一个脚本,可以访问不同网站上的表。然而,另一个网站是HTTP,所以chrome告诉我“此请求已被阻止;内容必须通过HTTPS提供。” 所以我要问的是:即使不是HTTPS,我如何访问不同网站上的元素。您需要构建一个代理,服务器端可以获取远程内容并返回,或者通过HTTPS连接 例如,在PHP中,您可以创建一个简单的“kanji.PHP”: 我的建议是: 只需下载页面,去掉不需要的内容(如页眉/页脚),然后在本地提供。这似乎是一个足够简单的页面。您可以尝试以下方法: $.get
所以我要问的是:即使不是HTTPS,我如何访问不同网站上的元素。您需要构建一个代理,服务器端可以获取远程内容并返回,或者通过HTTPS连接 例如,在PHP中,您可以创建一个简单的“kanji.PHP”:
我的建议是:
只需下载页面,去掉不需要的内容(如页眉/页脚),然后在本地提供。这似乎是一个足够简单的页面。您可以尝试以下方法:
$.get('//www.kanjidamage.com/kanji', null, function searchKD () { /*function*/ });
是的,这两个网站都必须使用https,否则就达不到目的。有些内容是加密的,有些则不是。您可能会将应该得到保护的信息(如信用卡号)发送到不安全的来源 如果您有权访问服务器代码。您可以创建一个路由,将请求发送到不安全的http域。这样,您的所有前端请求都指向同一个域,浏览器会很高兴,因为所有请求都是https 您将此标记为。如果是这样,就用它 Tampermonkey允许通过使用绕过“混合活动内容”限制 因此,这个完整的Greasemonkey/Tampermonkey脚本运行良好:
// ==UserScript==
// @name _Mixed content AJAX
// @match https://stackoverflow.com/questions/44620859/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_xmlhttpRequest
// @connect kanjidamage.com
// ==/UserScript==
GM_xmlhttpRequest ( {
method: "GET",
url: "http://www.kanjidamage.com/kanji",
onload: function (response) {
console.log (response.responseText);
}
} );
这只会使它成为
$。get('https://www.kanjidamage.com/kanji,空,用 searchKD(){/*用*/ });代码>这不起作用谢谢你给出了最好的答案!我对整个xmlhttprequest的事情感到非常困惑。你提供的链接没有解释任何东西…我如何访问“响应”中的标记、类和ID?要访问类等,你需要解析结果。我推荐DOMParser
。有几个答案可以解释吃了这个过程……但是,这一切都超出了这个问题的范围——这个问题已经得到了回答
$.get('//www.kanjidamage.com/kanji', null, function searchKD () { /*function*/ });
// ==UserScript==
// @name _Mixed content AJAX
// @match https://stackoverflow.com/questions/44620859/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_xmlhttpRequest
// @connect kanjidamage.com
// ==/UserScript==
GM_xmlhttpRequest ( {
method: "GET",
url: "http://www.kanjidamage.com/kanji",
onload: function (response) {
console.log (response.responseText);
}
} );