Обмен ресурсами между источниками с PrototypeJS

У меня возникли некоторые проблемы с Cross Origin Resource Sharing and Prototype. У меня есть простой почтовый запрос на иностранный ресурс, и для простого почтового запроса есть несколько правил, которые должны быть удовлетворены:

Тип контента должен быть из application / x-www-form-urlencoded, multipart / form-data или text / plain, простого запроса не устанавливает пользовательские заголовки с помощью http-запроса, и сервер должен установить правильный заголовок Access-Control-Allow-Origin.

с ванильным JavaScript XMLHttpRequest все работает нормально, но с PrototypeJS он не будет работать, потому что он отправляет наборы прототипов некоторые пользовательские заголовки, и я не знаю, как это предотвратить.

Я пробовал это в Prototype через:

new Ajax.Request('some.foreign-host.com/res.php', {
  method: 'post',
  postBody: 'foo=bar', 
  contentType: 'application/x-www-form-urlencoded', 
  onSuccess: function(e){
    // some custom code
  }
});

Есть идеи, как заставить Prototype отправлять такой простой запрос CORS?


У меня есть дамп заголовков, созданный простым JavaScript XMLHttpRequest :

POST /bthesis/returnJSON.php HTTP/1.1    
Host: foreign-host.com                         
Connection: keep-alive                   
Referer: this-host.com
Content-Length: 9                        
Origin: this-host.com     
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*                              
User-Agent: [...]
Accept-Encoding: gzip,deflate,sdch       
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

и заголовки, созданные с помощью запроса прототипа :

OPTIONS /bthesis/returnJSON.php HTTP/1.1 
Host: foreign-host.com                        
Connection: keep-alive                   
Referer: this-host.com
Access-Control-Request-Method: POST      
Origin: this-host.com      
Access-Control-Request-Headers: X-Prototype-Version, X-Requested-With, Content-type, Accept
Accept: */*                              
User-Agent: [...]
Accept-Encoding: gzip,deflate,sdch       
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

Прототип использует совершенно другой набор заголовков. , что приводит к следующей ошибке в консоли:

XMLHttpRequest не может загрузить foreign-host.com/bthesis/returnJSON.php. Поле заголовка запроса X-Prototype-Version не разрешено Access-Control-Allow-Headers. Отказался от получения небезопасного заголовка «X-JSON»

Странно то, что веб-сервер в обоих случаях возвращает запрошенный ресурс (я вижу его в представлении «Ресурсы» консоли разработчика в Chrome), но он показывает этот прототип каким-то образом не имеет к нему доступа

5
задан Grzegorz Gierlik 21 March 2013 в 12:46
поделиться