Получение с учетными данными и телом Json

Необходимо отправить запрос POST с помощью JSON body. Я должен использовать fetch.

Исходный фрагмент кода, который работал:

headers = {'Content-Type': 'application/json'};
body = {path: 'path1'};
fetch(url, {
        method: 'post',
        headers: headers,
        body: JSON.stringify(body)
    })
        .then(response => {//do work});

Теперь мне нужно добавить Http-Only cookies для A&A.

У этого ссылка на сайт есть ответ на это. По сути, придется добавить еще один параметр.

Впоследствии обновленный код:

fetch(url, {
        credentials: 'include',
        method: 'post',
        headers: headers,
        body: JSON.stringify(body)
    })
        .then(response => {//do work});

Сервер не видит cookie в header.

Затем протестировал fetch, удалив все остальное:

fetch(url, {
        credentials: 'include',
        method: 'post',
    })
        .then(response => {//do work});

Часть A&A работает, то есть сервер теперь видит cookie в header. Итак, добавил тело обратно и не верил, что это сработает:

body = {path: 'path1'};
fetch(url, {
        credentials: 'include',
        method: 'post',
        body: JSON.stringify(body)
    })
        .then(response => {//do work});

Как и ожидалось, это не сработало. Сервер Express с CookieParser показывает, что это тело {}.

После добавления заголовка Content-Type:

body = {path: 'path1'};
fetch(url, {
        credentials: 'include',
        method: 'post',
        headers: {'Content-Type': 'application/json'}
        body: JSON.stringify(body)
    })
        .then(response => {//do work});

Теперь cookie снова исчез. Предполагается, что это из-за добавления нового заголовка и замены заголовка, созданного fetch, который включает cookie. Я ошибся?

Пока я искал, я нашел аналогичный вопрос без ответа.

Как мне продолжить?

В headers вы можете добавить 'cookie' : '{cookie}'.

myselfmiqdad 12.03.2018 20:23

Я работаю в React, и я не нашел способа прочитать файлы cookie Http-Only. Поэтому я использую вариант withCredentials. Пожалуйста, дайте мне знать, если я ошибаюсь.

william 12.03.2018 21:35

Собственно, только что тестировал с помощью другой библиотеки axios. Такая же ситуация. Если я добавлю body, cookie будет удален. Это стандарт? Если да, то каков обходной путь?

william 12.03.2018 21:53

Получаете ли вы какие-либо сообщения в консоли инструментов разработчика браузера? Также подумайте об обновлении вопроса, чтобы отображать заголовки ответов, которые вы получаете от сервера в каждом случае (как показано на панели «Сеть» в devtools) - и, в идеале, также заголовки запросов для каждого случая.

sideshowbarker 13.03.2018 01:38

Я понял. Это проблема запроса OPTIONSpreflight. Сервер должен с этим справиться. И браузер отправляет только в том случае, если есть тело или дополнительные заголовки. Если это пустой запрос на получение чего-либо с сервера, OPTIONS не отправляется.

william 19.03.2018 16:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
7
5
12 178
0

Другие вопросы по теме