JS Fetch API — когда я должен использовать параметр учетных данных со значением «опускать», если по умолчанию fetch не отправляет и не получает никаких файлов cookie с сервера?

#javascript #credentials #fetch-api

#javascript #учетные данные #fetch-api

Вопрос:

На странице MDN Fetch API (раздел Отправка запроса с включенными учетными данными) написано, что:

Чтобы вместо этого браузеры не включали учетные данные в запрос, используйте учетные данные: ‘omit’.

 fetch('https://example.com', {
  credentials: 'omit'  
})
  

Однако изначально также написано, что:

По умолчанию fetch не отправляет и не получает никаких файлов cookie с сервера, что приводит к неаутентифицированным запросам, если сайт полагается на поддержание сеанса пользователя (для отправки файлов cookie должна быть установлена опция инициализации учетных данных).

Мой вопрос в том, что если я хочу опустить файлы cookie и заголовки авторизации, зачем мне вообще беспокоиться об использовании credentials: 'omit' в первую очередь, если написано, что по умолчанию (без credentials ), fetch не будут отправляться файлы cookie?

Комментарии:

1. Я чувствую, что это больше связано с обработкой заголовка Access-Control-Allow-Credentials .

2. Я думаю, что MDN имеет некоторую запутанную документацию. В firefox, если вы создаете объект запроса , по умолчанию для учетных данных используется значение «того же происхождения», хотя в документации указано, что по умолчанию используется значение «опустить»

3. Дальнейшее чтение предполагает, что разные браузеры имеют разные значения по умолчанию (по крайней мере, при создании объекта запроса, firefox, по-видимому, по умолчанию опускает, а chrome по умолчанию использует либо тот же источник, либо включает, в зависимости от версии — поэтому имеет смысл, чтобы документация документировала все допустимые параметры

Ответ №1:

Из-за этого обсуждения на whatwg / fetch значение по умолчанию было изменено с omit на same-origin в конце 2017 года.

Браузеры догоняли в 2018 году, поэтому вы можете видеть, что некоторые старые браузеры все еще используют omit . Например, Firefox изменился с omit на same-origin , начиная с 61. Chrome изменен с версии 72. Вы можете проверить полный список здесь.

И что еще более интересно, стандарт на странице whatwg (последнее обновление 23 марта 2019) по-прежнему остается omit .

Комментарии:

1. Таким образом, это означает, что страница документации MDN не обновлена?

2. Теперь у MDN есть небольшая сноска на странице: «С 25 августа 2017 года. Спецификация изменила политику учетных данных по умолчанию на same-origin. Firefox изменился с 61.0b13.»