Аякс и статус 302

У меня проблема с ajax (и / или jQuery ajax) и статусом 302.

Вот что я пытаюсь:

var xhr = new XMLHttpRequest();
xhr.open("GET", 'some_page_that_I_cant_change.php');
xhr.onreadystatechange = function(){
    console.log(xhr.readyState, xhr.status);
};
xhr.send(null);

some_page_that_I_cant_change.php перенаправляет на .bin с 302 код. Я не хочу скачивать этот файл, я просто хочу знать путь к файлу. Пример:

./some_page_that_I_cant_change.php
./path/to/bin/file.bin << I wan't only this path as string

Проблема в том, что Chrome автоматически перенаправляет в файл, не указывая мне путь к скрипту. Есть ли обходной путь для этого?

3 ответа

Решение

Если вы используете запрос HEAD вместо запроса GET, я подозреваю, что он будет делать то, что вы хотите. Вы должны видеть только заголовки в ответе, а не тело ответа (т. Е. Нет загрузки.bin).

Существует старая ветка о точно такой же теме с решениями и обходными путями: Как управлять запросом на перенаправление после вызова jQuery Ajax

Одним словом: я не думаю, что вы можете сделать это причиной протокола HTTP.
Протокол HTTP ([1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) предусматривает, что 302 означает URI перенаправления, а браузеры следуют. Итак, JavaScript не может получить ответ перенаправления, просто получить окончательный ответ.

Итак, вы должны получить путь по телу ответа.

Другие вопросы по тегам