我正在尝试在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;
usercript使用JSON.parse()处理响应,但这并不重要。
在chrome中,这可以很好地工作,但是firefox中的responseText是空的。
我已经读到这可能与同源策略有关。但我不明白这是怎么回事以及如何解决它。非常欢迎所有帮助!
答案 0 :(得分:3)
对象不能具有多个具有相同名称的属性。将charset标头值放入第一个Content-Type
。
另外,请尝试添加更多标头Content-Length
。最安全的做法是检查Firefox在普通POST请求中发送的标题(当您手动提交表单时)并将其全部复制。