@La1serg

Как передать куки другому домену с POST запросом?

Нужно сделать POST запрос к allpositions.ru/api и передать ему куки. Как это реализовать на js?

Скрин "документации" сервиса:
5d3c3122aaf0e280544976.png

Мой код:
receiveData() {
            document.cookie = `api_key=${token}`
            let data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><methodCall><methodName>get_report</methodName><params><param><value><int>999999</int></value></param></params></methodCall>";

            fetch(
                'http://allpositions.ru/api/', {
                    method: 'POST',
                    mode: 'no-cors',
                    credentials: 'include',
                    headers: {
                        'Content-Type': 'text/xml',
                        'Access-Control-Allow-Origin': 'http://allpositions.ru',
                        'Access-Control-Allow-Credentials': true,
                        'Access-Control-Allow-Methods': 'GET, POST',
                        'Access-Control-Allow-Headers': 'Content-Type, *',
                        // 'Cookie': `api_key=${token}`
                    },
                    body: data,
                })
                .then(response => {
                    response.text().then(function (text) {
                        console.log(text);
                    });
                })
        }


Проблемы:

1. В результате в консоли получаю предупреждение
Cross-Origin Read Blocking blocked cross-origin response

Это получилось обойти запустив браузер с параметром "--disable-web-security".

2. В ответе от allpositions.ru получаю информацию, что куки некорректные (на самом деле корректные, просто сервис их не получает).

Собственно вопрос в заголовке.
  • Вопрос задан
  • 1805 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
браузер отсылает куки только домену, с которого открыт документ, для вашего случая нужно использовать не браузерный скрипт, а например cURL.

Как это реализовать на js?
никак, точнее со стороны клиента в браузере никак. Можете использовать ноду на сервере, тогда будет на js и то что нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы