我正在尝试使用我的扩展中使用的Web worker使用POST方法发出异步请求。问题是它对我不起作用。 在服务器端,我有PHP脚本侦听$ _POST变量中的数据。虽然我能够建立与服务器的连接,甚至在URL(GET)中传递一些数据,但$ _POST始终为空。
以下是我在网络工作者中使用的最新代码:
var serviceUrl = "http://localhost/pfm/service/index.php";
var invocation = new XMLHttpRequest();
if(invocation){
invocation.open('POST', serviceUrl, true);
invocation.setRequestHeader('X-PINGOTHER', 'pingpong');
invocation.setRequestHeader('Content-Type', 'text/plain');
invocation.onreadystatechange = function(){processResponse(invocation);};
invocation.send("action=init");
}
(当我得知这个问题是同一个原始政策时,从MDN网站借来的)
在此之前,我使用了一个相当明显和荒谬的简单:
var serviceUrl = "http://localhost/pfm/service/index.php";
var xhr = new XMLHttpRequest();
xhr.open("POST", serviceUrl, true);
xhr.onreadystatechange = function(){processResponse(receiptStoreRequest);};
xhr.send("action=init");
在这种情况下,请求也已通过,但$ _POST仍为空。
Web worker上是否可能不允许POST请求?
现在一切都在localhost上进行测试。
答案 0 :(得分:0)
请勿设置内容类型text/plain
,而是
invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
如果您正在为Firefox 4+开发,您可能也对FormData objects
感兴趣