jQuery .get 对于非 https,在用户脚本中

jQuery .get for non https, in a userscript

我在我的网站上制作了一个脚本,可以访问另一个网站上的 table。但是,另一个网站是 HTTP,所以 chrome 告诉我 "This request has been blocked; the content must be served over HTTPS."

$.get('http://www.kanjidamage.com/kanji', null, function searchKD () { /*function*/ });

所以我要问的是:我如何访问不同网站上的元素,即使它不是 HTTPS。

您要么需要构建一个代理,服务器端可以获取远程内容,return它,要么通过 https 连接。

在 PHP 中(例如),您可以创建一个简单的 "kanji.php":

<?php

echo file_get_contents('http://www.kanjidamage.com/kanji');

?>

我的建议:

只需下载页面,删除不需要的内容(如 header/footer),然后在本地提供。这似乎是一个足够简单的页面。

你可以试试这个:

$.get('//www.kanjidamage.com/kanji', null, function searchKD () { /*function*/ });

是的,两个站点都必须使用 https,否则就达不到目的了。有些内容是加密的,有些则不是。您可能会将本应受到保护的信息(如信用卡号)发送到不安全的来源。

如果您有权访问您的服务器代码。您可以创建一个向不安全的 http 域发出请求的路由。这样你所有的前端请求都指向同一个域,并且浏览器很高兴,因为所有请求都是 https。

您已将其标记为 。如果是这种情况,请使用它。

Tampermonkey 允许使用 GM_xmlhttpRequestDoc.

绕过 "mixed active content" 限制

所以这个完整的 Greasemonkey/Tampermonkey 脚本工作正常:

// ==UserScript==
// @name     _Mixed content AJAX
// @match    
// @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);
    }
} );