【问题标题】:Does GM_xmlhttpRequest access the website as if I am accessing the website in my browser?GM_xmlhttpRequest 是否像在浏览器中访问网站一样访问网站?
【发布时间】:2013-05-24 19:50:44
【问题描述】:

我很好奇GM_xmlhttpRequest() 在某些情况下如何读取页面。
GM_xmlhttpRequest 是否像在浏览器中访问网站一样访问网站?

会话是否仍然有效?例如:如果我从一个浏览器选项卡登录到一个网站,然后从另一个选项卡从我的脚本发送一个 GM_xmlhttpRequest,这个新请求是否也已登录?

我问的一个原因是因为在我的脚本中的某个时刻,我向我的域页面之一发送了一个 GM_xmlhttpRequest,该页面从 PHP 报告了 REMOTE_ADDR。这是报告我计算机的 IP(这是我想要的)而不是我从中调用此函数的页面。

【问题讨论】:

    标签: javascript cross-domain greasemonkey tampermonkey gm-xmlhttprequest


    【解决方案1】:

    GM_xmlhttpRequest 访问网站是否如同我在浏览器中访问网站一样?例如,会话是否仍然有效?

    是和不是。 通常,GM_xmlhttpRequest 看起来就像 Firefox 对 URL 的请求。 It sends the usual headers and it normally sends any cookies。而且,是的,请求来自您的浏览器,因此它会报告您的 IP 地址。这意味着通常会保留您与网页的任何会话。

    但是:

    1. 如果该网页的 URL 跨域,并且您已禁用第三方 cookiethen GM_xmlhttpRequest will NOT send cookies 和目标网站不会知道您使用它的任何会话。

    2. GM_xmlhttpRequest 仅加载请求的 URL。如果它是任何网页:图像、CSS 文件、JS 文件等——网页调用的——都不会被加载或处理。页面中任何嵌入的 javascript 都不会运行。

      如果您需要获取支持 AJAX 的网站,请参阅 "How to get an AJAX get-request to wait for the page to be rendered before returning a response?" 了解更多信息和提示。

    【讨论】:

    • 这并不完全准确。图像实际上是作为 html 代码处理的。这在发出跨域请求时可以看到,其中来自域 B 的相对链接的图像尝试在域 A 上对所述图像发出请求,如果域 A 上不存在指向所请求文件的链接,则会导致 404。但是图像是,当然,不是从网络到网络的流式图像处理。
    【解决方案2】:

    天哪,它完全做到了!!!!!!

    var server2="http://www.somesiteimloggedinto.com";
    var test_data=function(){
        GM_xmlhttpRequest({
            method: "GET",
            url: server2,
            onload: function(response) {
                if(response.status == 200){
                    alert(response.responseText);
                }
            },
            onerror: function(response) {
                console.log("Connection to "+server2+" failed.");
            }
        });
    };
    test_data();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 2012-05-10
      • 2011-02-20
      • 2012-07-07
      • 2021-03-03
      • 1970-01-01
      相关资源
      最近更新 更多