У меня возникли проблемы с перекрещиванием ресурсов и прототипом Cross Origin. У меня есть простой запрос на отправку на иностранный ресурс, и для простого запроса на почту есть некоторые правила, которые должны быть выполнены:Перекрестный ресурс совместного использования ресурсов с PrototypeJS
Content-Type должен быть включен в application/x-www-form-urlencoded, multipart/form-data или text/plain, простой запрос не устанавливает пользовательские заголовки с HTTP-запросом, и сервер должен правильно настроить заголовок Access-Control-Allow-Origin.
с ванильным JavaScript XMLHttpRequest все работает нормально, но с PrototypeJS это не сработает, потому что он швы Prototype устанавливает некоторые пользовательские заголовки, и я не знаю, как его предотвратить.
Я попробовал его в 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
}
});
Любая идея, как получить прототип, чтобы послать такой простой 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
и заголовки, созданные Prototype запрос на:
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»
Странно, что веб-сервер возвращает в обоих случаях запрашиваемый ресурс (я вижу его в представлении «Ресурсы» консоли разработчика в хроме), но он швы что прототип не имеет доступа к нему как-то
Это работало для меня. спасибо – FosAvance