【问题标题】:Is there a function to see my request payload that's being sent inside a POST request?是否有查看在 POST 请求中发送的请求有效负载的功能?
【发布时间】:2021-04-02 16:40:48
【问题描述】:

我正在尝试登录一个网站,并获得一个特定的 GET 请求,但是,我不确定我是否正确执行此操作。我会解释一些细节。

网站设置如下: 登录页面:example.com/something/login 登录时发送的帖子请求 URL:example.com/something/token 和我需要的 GET 请求:URL:website.com/something/info

我的问题是我的代码似乎没有让我登录,因为当我尝试获取 website.com/something/info 时它返回响应 401。我不确定我的代码是否没有发送有效负载,或者我的代码是不正确。

我的问题也可能是我使用了错误的 URL。我正在使用example.com/something/login,但我不确定是否应该使用example.com/something/loginexample.com/something/token(我登录时似乎发送的内容)

另外我应该链接token的请求载荷:

grant_type=password&username=MYUSERNAME&password=MYPASSWORD&scope=3

import requests
with requests.Session() as session:
  session.post("example.com/something/login"), data={
  'grant_type':'password',
  'username':'MYUSERNAME',
  'password':'MYPASSWORD',
  'scope':'3'
  })
  print(session.get("example.com/something/info")) 

【问题讨论】:

    标签: python python-requests


    【解决方案1】:

    从您共享的 URL 看来,您需要将参数作为 query parameters 传递。使用requests.Session 指定它是:

    import requests
    with requests.Session() as session:
      res_post = session.post("example.com/something/token", params={
        'grant_type':'password',
        'username':'MYUSERNAME',
        'password':'MYPASSWORD',
        'scope':'3'
        })
      print(f'post status: {res_post.status_code}')
      print(f'post status: {res_post.data}')
      res_get = session.get("example.com/something/info", headers={'Authorization': f"Bearer {res_post.json()['token']}"})
      print(f'get status: {res_get.status_code}')
      print(f'get status: {res_get.data}')
    

    【讨论】:

    • res.status_code 给我回复 405... 这是否意味着网站不允许这样做,还是我做错了什么?另外,确切的消息是:{"Message":"Authorization has been denied for this request."},(此错误来自 session.get("website.com/something/info"))
    • 是的,这意味着路由/something/login 很可能还没有实现。仔细检查建立登录/持有者令牌是否正确。您很可能需要将标头 Authorization: Bearer <token> 添加到您的 GET /something/info 请求中。由于登录失败,第二个错误似乎是意料之中的。
    • 是的,网站不允许,或者我的代码有错误?
    • 代码看起来很好,除了语法错误(帖子中的额外括号)。它是哪个网站?你怎么知道请求登录/不记名令牌的正确路径是什么?用更多调试信息更新了我的答案。
    • 我不确定请求登录/持有者令牌的正确途径是什么,我只是想,既然“令牌”帖子来自登录页面,它就会来自那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2013-01-09
    • 1970-01-01
    • 2013-09-23
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多