Как скопировать почтовый запрос, как показано в Chrome Inspect? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь программно аутентифицировать себя для фэнтезийной игры Премьер-лиги (https://fantasy.premierleague.com/). Когда я проверяю вкладку сети в Chrome Inspect при входе в систему, я вижу следующий пост-запрос и ответ ..

Общая информация:URL запроса: https://users.premierleague.com/accounts/login/
Метод запроса: POSTКод статуса: 302Удаленный адрес: 151.101.86.217:443Политика реферера: no-referer-when-downgrade

Заголовки ответа:диапазоны принятия: байтыконтроль кеша: приватный, без кеша, без хранилища, обязательно повторная проверка, max-age = 0длина контента: 0Тип контента: текст / HTML;кодировка = UTF-8дата: вс, 31 марта 2019 17:22:05 GMTрасположение: https://fantasy.premierleague.com/a/login?state=success
сервер: nginx / 1.13.5set-cookie: csrftoken = cjda9XUQ26ZiXWl0KUbk5GVNNVUSUQZCy70OMZn4TcjapME8pijv7cNI413bPHs8;истекает = вс, 29 марта 2020 г. 17:22:05 мск;Max-Age = 31449600;Path = /set-cookie: messages = "fa4474ff71c7bd5422bf64125057fbc6ed68c6b1 $ [[\" __json_message \ "\ 0540 \ 05425 \ 054 \" Успешно зарегистрирован как. \ "] \ 054 [\" __ json_message \ "\ 0540 \ 05425 \ 054вышли из системы. \ "] \ 054 [\" __json_message \ "\ 0540 \ 05425 \ 054 \" Успешно вошел как. \ "]]";HttpOnly;Path = /set-cookie: sessionid = mruasqjsv9ru8r7qlqk5vauixkt3uq88;истекает = вс, 14 апреля 2019 17:22:05 мск;HttpOnly;Max-Age = 1209600;Путь = / set-cookie: sudo = "V1mmxfTng2qS: 1hAe9l: Kn0n8h3dSwGH-Qv2RbGNn5MrwvE";истекает = вс, 31 марта 2019 20:22:05 GMT;HttpOnly;Max-Age = 10800;Path = /;безопасныйSet-Cookie: pl_profile = eyJzIjogIld6SXNNVFk1T1RZNU5qVmQ6MWhBZTlsOll5aU4zQ3BWb1A0a3l2ZDZUS09LLUNyeHJhdyIsICJ1IjogeyJsbiI6ICJMaW5kYmVyZyIsICJmYyI6IDMsICJpZCI6IDE2OTk2OTY1LCAiZm4iOiAiSmltIn19;Домен = premierleague.com;истекает = вс, 14 апреля 2019 17:22:05 мск;Max-Age = 1209600;Path = /;безопасныйстатус: 302варьировать: Cookieчерез: 1.1 Googleчерез: 1.1 лакx-cache: MISSx-cache-hit: 0x-frame-options: SAMEORIGINx-обслуживаемый: cache-bma1634-BMA

Заголовки запроса: author: users.premierleague.com: метод: POST: путь: / учетные записи / логин /: схема: httpsпринять: текст / html, приложение / xhtml + xml, приложение / xml; q = 0,9, изображение / webp, изображение / apng, / ; q = 0,8принять кодировку: gzip, deflate, brязык принятия: sv-SE, sv; q = 0,9, en-US; q = 0,8, en; q = 0,7контроль кеша: max-age = 0длина контента: 186тип содержимого: application / x-www-form-urlencodedcookie: _ga = GA1.2.963283199.1544268407;_gid = GA1.2.530727258.1554052864;csrftoken = xRErJTDda0drIGPICOjvXMHhkjjRRmsO74wbhoZBmKbz5zpHATuVJQ3sTWIIvaXf;messages = "956228cd3e90b2b498670e8d2101699bcec07800 $ [[\" __ json_message \ "\ 0540 \ 05425 \ 054 \" Успешно зарегистрирован как. \ "] \ 054 [\" __ json_message \ "\ 0540 \ 05425 \ 054 \" Вы"]]";_gat = 1;_gat_UA-33785302-1 = 1источник: http://evil.com/
реферер: https://fantasy.premierleague.com/?fail
запросы на обновление без защиты: 1пользовательский агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 72.0.3626.121 Safari / 537.36

Данные формы:csrfmiddlewaretoken: OFwVFKPSkKc0AG1hxHekpCSWb1l3Wl35авторизоваться:пароль:приложение: plfpl-webredirect_uri: https://fantasy.premierleague.com/a/login

Я пытаюсь повторить этот почтовый запрос, используя Javascript и Axios.У меня есть следующий код:

authPLfantasy() {
        let formData = new FormData();
        formData.append('password', '<password>');
        formData.append('login', '<username>');
        formData.append('redirect_uri', 'https://fantasy.premierleague.com/a/login');
        formData.append('app', 'plfpl-web');

        let config = {
            url: 'https://users.premierleague.com/accounts/login',
            method: 'post',
            withCredentials: true,
            data: formData
        };

        return axios.request(config);
    }

Результат, который я получаю при регистрации, результат этой функции: «Доступ к XMLHttpRequest в« https://users.premierleague.com/accounts/login' из источника »http://localhost:3000' имеетбыл заблокирован политикой CORS: значение заголовка «Access-Control-Allow-Origin» в ответе не должно быть подстановочным знаком «*», если режим учетных данных запроса «include». Режим учетных данных запросов, инициированных XMLHttpRequestуправляется атрибутом withCredentials. "

Я смутно знаком с CORS, поэтому думаю, что смогу решить его, если долго и достаточно сильно ударить головой о стену, но я слышал, что CORS не будет влиять на отправку запроса по почте через Postman, поэтому я попытался использовать это вместо этого просто посмотреть, смогу ли я заставить это работать. Хотя я получаю ответ «200 OK» с помощью «Почтальона», я не получаю правильный ответ, потому что мне не хватает файлов cookie pl_profile и sessionid. Изменены данные формы в Почтальоне, так что пароль или имя пользователя недопустимы, по-прежнему отображается 200 OK.

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

1 Ответ

0 голосов
/ 01 апреля 2019

Если вы используете Chrome, возможно, проще всего будет

  1. Открыть Chrome Dev Tools
  2. Перейти на вкладку Сеть
  3. Выберите запрос, который выХотите скопировать
  4. Щелкните правой кнопкой мыши и выберите «Копировать> Копировать как cURL»
  5. Откройте терминал, вставьте команду и выполните ее

enter image description here

...