Использование API выборки с режимом: «без корреспонденции», невозможно установить заголовки запроса.

Я пытаюсь попасть в конечную точку службы, и служба является службой входа в систему. Я использую тип аутентификации как базовый. Код находится в реакции и использует библиотеку выборки, однако, даже если я установил поле заголовков в своем запросе, я не могу увидеть значения соответствующих заголовков в моем запросе на вкладке сети?

Ниже приведен код:

var obj = {
  method: 'GET' ,
  mode : 'no-cors',
  headers: {
      'Access-Control-Request-Headers': 'Authorization',
      'Authorization': 'Basic amFzcGVyYWRtaW46amFzcGVyYWRtaW4=',
      'Content-Type': 'application/json',
      'Origin': ''
  },
  credentials: 'include'
};
fetch('http://myreport:8082/jasperserver/rest/login/', obj ).then(…

Всплывающее окно, в котором запрашивается имя пользователя и пароль Всплывающее окно, в котором запрашивается имя пользователя и пароль


Запрос и ответ на вызовы с вкладок сети Запрос и ответ на вызовы с сетевых вкладок


person sumit bhanwala    schedule 17.06.2017    source источник
comment
это похоже на запрос о перекрестном происхождении, почему вы установили режим «no-cors»?   -  person WitVault    schedule 17.06.2017


Ответы (1)


Ни один из ваших заголовков не является CORS-safelisted, поэтому их нельзя прикрепить к запросу.

Объяснение:

  1. no-cors режим запроса устанавливает для свойства guard объекта заголовков значение request-no-cors
  2. Чтобы добавить имя/value (имя/значение) к объекту Headers (заголовки), браузер должен выполнить следующие шаги:

    1. Нормализация значения.

    2. Если имя не является имя или значение не является value, а затем выдать ошибку TypeError.

    3. Если охрана "неизменяемая", выдайте TypeError.

    4. В противном случае, если охрана является «запросом», а имя является запрещенным именем заголовка, возврат.

    5. В противном случае, если защита равна "request-no-cors", а имя/значение не равно CORS-safelisted request-header, возврат. ваш сценарий

    6. В противном случае, если защита является «ответом», а имя является запрещенным именем заголовка ответа, возврат.

    7. Добавить имя/значение в список заголовков.

  3. CORS-safelisted request-header (case-insensitive):
    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type, but only if the value is one of:
      • application/x-www-form-urlencoded
      • multipart/form-data
      • text/plain

Вы можете узнать больше о спецификациях fetch Headers class здесь: https://fetch.spec.whatwg.org/#headers-class

person Dzmitry Bachko    schedule 08.07.2017
comment
mode: 'no-cors' в основном нормализует запрос, чтобы он был простым, например, сервер получит Content-Type: text/plain вместо application/json, который у вас есть в вашем фрагменте кода. Я нахожу это поведение довольно странным/интересным, но так оно и есть. mode:no-cors также позволяет избежать запуска предварительной проверки. - person Borek Bernard; 24.12.2020