Что необходимо для выполнения аутентифицированного необработанного HTTP-запроса к Drupal 7? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь подготовить внешний скрипт на PHP или Python (или даже в чистом Bash, используя curl, если это не требует большой дополнительной работы), который успешно выполнит аутентифицированный HTTP-запрос к доступной только странице Drupal. аутентифицированному пользователю.

Чтобы узнать, как должен выглядеть такой необработанный HTTP-запрос, я сначала пытаюсь выполнить такой необработанный HTTP-запрос с помощью Postman.

Я установил:

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

В браузере у меня статус 200, и страница отображается правильно, но в Почтальоне, к сожалению, я получаю статус 403 Forbidedden .

Что мне делать с мЧтобы этот HTTP-запрос работал правильно, как в браузере?

1 Ответ

1 голос
/ 07 ноября 2019

Обычно вам нужно выполнить 2 запроса, чтобы он работал как в браузере:

  • GET /user/login, чтобы проанализировать документ и получить логин пользователя form_build_id, например.

    <input type="hidden" name="form_build_id" value="form-IJkfUfaubS...OsWXBsw">
    
  • POST /user/login с хотя бы этим заголовком Content-Type: application/x-www-form-urlencoded и следующими данными формы:

    • form_build_id : <form_build_id>
    • name : <username>
    • pass : <password>
    • form_id : user-login

После проверки подлинности вы должны получить файл cookie сеанса (см. «Cookies»). «Кнопка в Почтальоне), используя этот файл cookie в следующих запросах, вы сможете получать приватный контент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...