У меня есть виртуальный каталог на IIS 5.1 с двумя страницами aspx. Доступ к параметру Page1 настроен как опция «Встроенная проверка подлинности Windows», а анонимный доступ отключен. Страница2 доступна через анонимный доступ. На стороне клиента есть объект XmlHttpRequest, который может отправлять запросы, содержащие данные POST, на эти страницы.Почему Content-Length равен 0 при отправке запроса POST с объектом XMLHttpRequest?
Сначала я пытаюсь отправить запрос на страницу. Появляется стандартный диалог проверки подлинности Windows, я вводя свои учетные данные и Page 1 успешно получаю данные POST. После этого я пытаюсь сделать тот же запрос POST для страницы 2, к которому можно получить доступ анонимно. И в этом случае Request имеет заголовок Content-Length = 0, и никакие данные не были отнесены.
Если повторить запрос к Page1 - он успешно получает данные POST. Тот же код работает хорошо в Firefox 3.5. Page2 может получать данные даже после отправки запроса на проверку подлинности Windows Page1. Что может быть неправильным? И, возможно, это какая-то обходная проблема для этой проблемы?
Спасибо!
Передача данных:
function sendRequest() {
var url = "http://tom/AuthTest/Default.aspx";
var data = "data";
reqSend(url, data);
}
function sendRequestToWinAuth() {
var url = "http://tom/AuthTest/DefaultWA.aspx";
var data = "newdata";
reqSend(url, data);
}
function reqSend(url, data) {
var xmlhttp = createRequestObject();
if (!xmlhttp) {
alert("Cannot create XMLHttpRequest object.");
return;
}
try {
xmlhttp.open("POST", url, false);
xmlhttp.send(data);
}
catch (ex) {
alert("Error: " + ex.message);
}
}
Запрос на Page1:
POST /AuthTest/DefaultWA.aspx HTTP/1.1
Accept: */*
Referer: http://tom/AuthTest/client/testauth.html
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: tom
Content-Length: 7
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: innovator_user=admin
Authorization: Negotiate TlRMTVNTUAADAAAAGAAYAF4AAAAYABgAdgAAAAoACgBIAAAABgAGAFIAAAAGAAYAWAAAAAAAAACOAAAABYKIogUBKAoAAAAPcwBjAGEAbgBkAHQAbwBtAFQATwBNAGUdQIkWMQ6PAAAAAAAAAAAAAAAAAAAAAAo3goJdI7RH9poJwnjypksH2F2pIzbEOQ==
newdata
Запрос Page2:
POST /AuthTest/Default.aspx HTTP/1.1
Accept: */*
Referer: http://tom/AuthTest/client/testauth.html
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: tom
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: innovator_user=admin
Authorization: Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAADw==
Content-Length: 0
я думаю, что это относится к http://stackoverflow.com/questions/328281/why-content-length-0-in-post-requests – Janning