2

我正在尝试在 Firefox 中为 Chrome 和 Greasemonkey 做一个用户脚本。

我正在使用 GM_xmlhttpRequest 因为它应该在两个平台上都可以工作。请求代码似乎在两种浏览器中都有效,但在 Firefox 中,responseText 是空的,而 Chrome 中我得到了预期的响应。

用户脚本代码:

// ==UserScript==  
// @include        *.website.org/Forum/Read.aspx?*  
// ==/UserScript==

        getstr = "thread="+thread+"&day="+getday;
    GM_xmlhttpRequest({
        method: "POST",
        url: "http://www.other.org/js/gm/get.php",
        data: getstr,
        headers: {
            "Content-Type": "application/x-www-form-urlencoded",
            "Content-type":"charset=utf-8"
        },
        onload: function(response) {
                        alert(response.responseText);
        }
    });

“other.org”网站上的 php 脚本:

    $json = json_encode($array);
    echo $json;

用户脚本使用 JSON.parse() 处理响应,但这在这里并不重要。

在 chrome 中,这很好用,但是在 Firefox 中 responseText 是空的。

我已经读到这可能与同源策略有关。但我不明白这可能是怎么回事以及如何解决它。非常欢迎所有帮助!

4

1 回答 1

3

对象不能有多个同名的属性。将字符集标头值放入第一个Content-Type.

另外,尝试添加更多标题Content-Length,特别是。最安全的选择是检查 Firefox 在正常 POST 请求中发送的标头(当您手动提交表单时)并将它们全部复制。

于 2012-01-15T16:36:30.740 回答