Заголовки ответа недоступны для запроса на выборку с 'redirect: manual' - PullRequest
0 голосов
/ 05 октября 2018

Я делаю

        console.log("navigating");
        var rsp = await fetch(params.url, {
            credentials: "include", redirect: "manual", mode: "cors"
        });
        console.log(rsp);
        rsp.headers.forEach(console.log);

        console.log(rsp.headers.get('Location'));
        console.log(rsp.headers.get('location'));

и заголовки ответа от Chrome Dev Tools:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:4400
Access-Control-Expose-Headers: Location
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 0
Date: Fri, 05 Oct 2018 12:48:21 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Location: http://localhost/test

дает

Response 
body: (...)
bodyUsed: falseheaders: 
Headers {}
ok: false
redirected: false
status: 0
statusText: ""
type: "opaqueredirect"
url: "..."

index.ts:161 null
index.ts:162 null

Возможно ли получить ответзаголовки при перенаправлении ответа?

1 Ответ

0 голосов
/ 05 октября 2018

Разве невозможно получить заголовки ответа при перенаправлении ответа?

Нет, это невозможно.Требования спецификации Fetch предотвращают это.

Данные, которые показывает вопрос, ожидаются для redirect: "manual".В частности, объект заголовков, доступный для внешнего интерфейса JS, как ожидается, будет пустым в ответах на redirect: "manual" запросов.

Подробнее: Когда запрос устанавливает redirect: "manual", тип ответа - opaqueredirect.Информация о влиянии этого на https://developer.mozilla.org/en-US/docs/Web/API/Response/type:

opaqueredirect: запрос на выборку был сделан с redirect: "manual".Ответ имеет статус 0, заголовки пусты , тело пусто, а трейлер пуст.


Эти сведения в этой статье MDN основаны непосредственно на следующих частяхспецификация выборки:

https://fetch.spec.whatwg.org/#concept-request-redirect-mode

С запросом связан связанный режим перенаправления, который "follow", "error" или "manual".

"manual" : извлекает отфильтрованный ответ непрозрачного перенаправления , когда запрос удовлетворен перенаправлением, так что перенаправление может быть выполнено вручную.

https://fetch.spec.whatwg.org/#concept-filtered-response-opaque-redirect

Отфильтрованный ответ непрозрачного перенаправления - это фильтрованный ответ, тип которого "opaqueredirect", состояние 0, сообщение о состоянии - пустая последовательность байтов, список заголовков пуст , тело равно нулю

непрозрачный отфильтрованный ответ и непрозрачный отфильтрованный ответ почти неотличимы от сетевой ошибки

...