У меня есть сервер, исходный код которого недоступен, поэтому я не знаю, что там происходит.Как получить поля заголовка в запросе CORS с использованием Fetch api
Я пытаюсь отправить запрос CORS, и запрос будет успешным. В ответе должен быть заголовок Location, и я могу подтвердить, что он присутствует, используя cURL, а также вкладку Network Monitor Firefox в Dev Tools. Но я не могу получить доступ к этому в JavaScript с помощью XMLHttpRequest или получить api.
Мой код с использованием fetch api выглядит следующим образом.
fetch(url, {
method: 'post',
mode: 'cors',
credentials: 'include',
body: 'creating a new session',
headers: {
'Access-Control-Request-Headers': 'Location',
'Content-Type': 'text/html',
},
}).
then((res) => {
if (res.status >= 200 && res.status < 300) {
console.log('Location:', res.headers.get('Location'));
} else {
throw new Error('Ooops...something went wrong.');
}
})
.catch(e => console.log(e.message));
На вкладке Сетевой монитор Firefox я получаю следующие данные.
[Response Headers]
Access-Control-Allow-Credentials: "true"
Access-Control-Allow-Origin: "http://localhost:8081"
Content-Length: <some length>
Date: <some date>
Location: <required info is shown>
Server: <some info>
[Request Header]
Host: <host name>
User Agent: <user agent info for Firefox>
Accept: <a lot of stuff>
Accept-Language: "en-US,en;q=0.5"
Accept-Encoding: "gzip, deflate"
Content-Type: "text/plain;charset=UTF-8"
Referer: "http://localhost:8081"
Origin: <same as Referer>
Content-Length: "22"
Authorization: <some string>
Connection: "keep-alive"
Что нужно сделать, чтобы извлечь заголовок местоположения?
так, ваш статус 2xx? и 'console.log ('Location:', res.headers.get ('Location'));' ничего не регистрирует? –
@JaromandaX Status is 201, и он печатает «Location: null». –
Вы видите, что заголовок 'Access-Control-Request-Headers: Location' не находится в заголовках запроса - это было бы в предполетном запросе' OPTIONS', и, честно говоря, я думаю, что вы неправильно делаете CORS - вы хотите ПОЛУЧИТЬ местоположение, так почему бы вам установить местоположение в качестве заголовка запроса? –