Ajax не читает код ответа 302 [дубликат]

Работа с Underscore 's property или propertyOf:

var test = {
  foo: {
    bar: {
      baz: 'hello'
    }
  }
}
var string = 'foo.bar.baz';


// document.write(_.propertyOf(test)(string.split('.')))

document.write(_.property(string.split('.'))(test));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

Удача ...

124
задан Vasil 11 November 2008 в 23:59
поделиться

2 ответа

Что произойдет, если браузер получит ответ перенаправления на запрос ajax?

Если сервер отправляет перенаправление (например, ответ 302 плюс заголовок Location), перенаправление автоматически следует браузер. Ответ на второй запрос (при условии, что он также не является другим перенаправлением) - это то, что доступно вашей программе.

На самом деле у вас нет возможности обнаруживать произошел ли ответ 302. Если перенаправление 302 приводит к 200, то ваша программа действует одинаково, как если бы исходный запрос приводил непосредственно к 200.

Это был как мой опыт, так и поведение , вызванное в spec .

2016 Обновление: прошло время, и хорошей новостью является то, что новый fetch () API предложил предложить более мелкозернистый элемент управления о том, как обрабатываются переадресации , с поведением по умолчанию, аналогичным XHR. Тем не менее, он работает только там, где fetch () реализован изначально . Полиморфные версии fetch () , которые основаны на XHR- , продолжают иметь ограничения XHR . К счастью, поддержка родного браузера , кажется, хорошо округляется.

181
ответ дан greim 27 August 2018 в 21:36
поделиться
  • 1
    Интересно, что я пришел к этому, потому что я испытываю ситуацию, когда перенаправление, по-видимому, не соблюдается ... это происходит, когда перенаправление нарушает ту же политику происхождения. – Gus 22 May 2013 в 01:32
  • 2
    @Gus, который, вероятно, логичен – Dmitry 22 November 2013 в 21:43
  • 3
    Что должно произойти, если перенаправление приводит к 401 вместо 200? Кажется, я сталкиваюсь с этой проблемой и получаю ошибки в jQuery, поэтому я пытаюсь выяснить, что именно должен делать brower / JS. – Eric B. 14 January 2014 в 20:27
  • 4
    В случае перенаправления на ошибку 401 (или любую ошибку 4xx или 5xx) я бы предположил, что ваша программа будет вести себя так, как если бы запрос привел непосредственно к 401. Разве это не то, что вы видите? – greim 16 January 2014 в 00:16
  • 5
    API RESTful может отправить 201 и заголовок Location после запроса POST; см. restapitutorial.com/lessons/httpmethods.html . – Keelan 25 May 2015 в 11:35

После этого ajax-request будет перенаправлен afaik. Фактический контент (.responseText, .responseXML) будет содержимым с страницы, на которую вы перенаправлены.

Возможно, вы сможете перехватить перенаправление (status-code, location-header) в readyState 2 или 3, но не уверен в этом.

7
ответ дан shashwat 27 August 2018 в 21:36
поделиться
  • 1
    Нет, все эти государства имеют тот же статус. Даже значение getAllResponseHeaders() равно. – sebastianwagner 24 October 2014 в 13:03
Другие вопросы по тегам:

Похожие вопросы: