Я пытаюсь сделать запрос, используя dojo.xhrGet , чтобы получить некоторые данные XML с сервера. Я использую додзе 1.4.0.
Сервер требует, чтобы я передавал учетные данные через специальный заголовок HTTP с именем Myauthtoken
.
В Safari все отлично работает. Код открывает диалоговое окно, показывающее [object Document]
. Но в Firefox диалог показывает null
. В какой-то момент процесса пользовательский заголовок удаляется или поврежден, и сервер его не принимает.
Соответствующий код выглядит примерно так:
dojo.xhrGet({
url: 'https://host.com/path/to/thing?param1=one¶m2=two',
headers: {
'Myauthtoken': 'username:password'
},
handleAs: 'xml',
load: function(response) {
alert(response);
},
error: function(e) {
alert("error: " + e);
}
});
В Firefox Firebug отображает следующие заголовки запроса:
Хост: host.com
User-Agent: Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv: 1.9.1.7) Gecko / 20091221 Firefox / 3.5.7
Примите: текст / html, приложение / xhtml + xml, приложение / xml; q = 0,9, / ; q = 0,8
Accept-Language: en-us, en; q = 0,5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,7
Keep-Alive: 300
Соединение: keep-alive
Происхождение: ноль
Метод контроля доступа-запроса: GET
Заголовки-Access-Control-Request-*: myauthtoken, х-запрос-с
Сервер отвечает 403 (запрещено) и эти заголовки ответа:
Дата: Четверг, 28 января 2010 г. 20:02:47 GMT
Сервер: Noelios-Restlet-Engine / 1.0.6
Тип содержимого: text / html; кодировка = ISO-8859-1
Длина содержимого: 337
Соединение: закрыть
Обновление!
Я занимался исследованиями, и похоже, что проблема в том, что Firefox пытается предварительно выполнить запрос из-за пользовательских заголовков , а Safari - нет, а вместо этого просто отправляет пользовательские заголовки без предварительной проверки. если они действительны.
Я тоже разобрался как посмотреть запрос в Safari :
Cache-Control: max-age = 0
Тип содержимого: application / x-www-form-urlencoded
Myauthtoken: имя пользователя: пароль
User-Agent: Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_8; ru-ru) AppleWebKit / 531.21.8 (KHTML, как Gecko) Версия / 4.0.4 Safari / 531.21.10
И заголовки ответа:
Cache-Control: без магазина
Соединение: закрыть
Длина содержимого: 236391
Тип содержимого: application / xml; кодировка = ISO-8859-1
Дата: Пт, 29 января 2010 23:02:22 GMT
Сервер: Noelios-Restlet-Engine / 1.0.6
Основным отличием является Content-Length: 235391
К сожалению, я все еще не намного ближе к тому, чтобы найти решение - все еще ищу какие-то хорошие идеи или вообще какие-то идеи.
Есть мысли о том, что происходит и как я могу обойти это?
Спасибо!