【问题标题】:What is needed to perform an authenticated raw HTTP request to Drupal 7?对 Drupal 7 执行经过身份验证的原始 HTTP 请求需要什么?
【发布时间】:2021-11-24 23:34:13
【问题描述】:

我正在尝试在 PHP 或 Python 中准备一个外部脚本(或者甚至在纯 Bash 中使用 curl,如果它不需要很多额外的工作),它将成功地对 Drupal 页面执行经过身份验证的 HTTP 请求,只能访问给经过身份验证的用户。

要知道这样一个原始 HTTP 请求应该是什么样子,我首先尝试使用 Postman 执行这样一个原始 HTTP 请求。

我设置了:

  • 请求方法为 GET
  • 正确的 URL 地址
  • 所有标题与浏览器中的标题相同(当我以 admin 身份登录时,我使用开发人员工具复制它们)包括包含当前会话密钥的当前 cookie 及其价值

在浏览器中我的状态为 200 并且页面显示正确,但在 Postman 中,不幸的是我收到了 403 Forbidedden 的状态

我应该怎么做才能让这个 HTTP 请求像在浏览器中一样正常工作?

【问题讨论】:

  • 嗨,您最终是否找到了一种更好的方法来执行经过身份验证的类似浏览器的请求(不使用服务)?

标签: http authentication drupal request postman


【解决方案1】:

基本上,您需要执行 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 : &lt;form_build_id&gt;
    • name : &lt;username&gt;
    • pass : &lt;password&gt;
    • form_id : user-login

通过身份验证后,您应该会获得一个会话 cookie(请参阅 Postman 中的“Cookies”按钮),在接下来的请求中使用此 cookie,您应该能够获得私有内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多