Асинхронный POST-запрос от веб-работника Firefox - PullRequest
1 голос
/ 28 августа 2010

Я пытаюсь сделать асинхронный запрос методом 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 все еще был пуст.

Возможно ли, что POST-запросы не разрешены для веб-работников?

Сейчас все тестируется на локальном хосте.

1 Ответ

0 голосов
/ 28 августа 2010

Не устанавливайте тип контента text/plain, но

invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

. Если вы разрабатываете для Firefox 4+, вас могут заинтересовать объекты FormData

...