【问题标题】:How do I read setRequestHeader OF XMLHttpRequest to my API?如何将 XMLHttpRequest 的 setRequestHeader 读取到我的 API?
【发布时间】:2020-10-24 21:49:59
【问题描述】:

我有一个程序 - chrome 扩展 - 将 API 调用发送到我在 Heroku 上托管的 API - FastAPI、Python。我使用包含唯一用户 ID 的 setRequestHeader() 和 XML API 调用,并希望从我的 API 中读取标头 - 因此我可以将每个唯一用户 ID 标头的调用限制为每秒 1 次。

var req = new XMLHttpRequest();
req.open("GET", checkDomain, true);
req.setRequestHeader("Authorization", "Basic " + userid);
(req.send(null);

然后 js 代码稍后从返回用户 Header 的 API 端点读取始终为空的响应

FastAPI 端代码 -

 #Reads header?
 @app.get("/items/")
 async def read_items(user_agent: Optional[str] = Header(None)):
     return {"User-Agent": Header}

我从 chrome 扩展端解析和警告的返回值始终是 {"User-Agent":""} 空对象,但成功通过

【问题讨论】:

    标签: javascript python google-chrome-extension fastapi


    【解决方案1】:

    还有更好的办法!

    您可以在 Request 对象中找到有关请求的所有信息。

    from fastapi import Request
    
    @app.get("/items/")
    async def read_items(request: Request):
        return request.headers
    

    这包含有关请求标头的所有内容,如果您只想获取用户代理,您可以简单地这样做

    return request.headers['user-agent']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-19
      • 2013-06-16
      • 2016-02-06
      • 2015-01-09
      • 2013-10-13
      • 2012-07-16
      • 2018-06-19
      • 1970-01-01
      相关资源
      最近更新 更多