发送到Flask Server的React Http axios get请求到达时没有添加到其头中的jwt

yeotifhr  于 2022-09-28  发布在  React
关注(0)|答案(1)|浏览(248)

我试图通过从React客户端向Flask服务器发送axios-get请求来获取用户数据。
这是我的获取请求:

axios.get("http://10.0.0.14:5000/users")

这是请求在发送到服务器之前经过的拦截器,并随JWT一起提供:

axios.interceptors.request.use(req=>
    {

        req.headers['x-access-token']=authSvr.getToken()
        return req
    })

这是 flask 中负责处理jwt的部分:

@app.before_request
def check_token():
    auth_bl=AuthBL()
    if "/auth" not in request.url:
        if request.headers and request.headers.get('x-access-token'):
            token = request.headers.get('x-access-token')

            exist = auth_bl.verify_token(token)
            if exist is None:
                return make_response({"error" : "Not authorized"},401)
        else:
            return make_response({"error" : "No token provided"},401)

由于某些原因,当我打印请求头时,如print(request.headers),我看到的是:

Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-access-token
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Sec-Fetch-Mode: cors
Referer: http://localhost:3000/
Accept-Encoding: gzip, deflate

正如您所看到的,我没有x-access-token密钥,而是作为密钥access-Control-Request-Headers的值发送的。
有人知道如何解决这个问题吗?谢谢

368yc8dk

368yc8dk1#

如果您使用无记名令牌,您可以尝试以下操作:
您可以通过头发送令牌

const headers = { Authorization: `Bearer ${token}` };

axios.get("your api url", { headers })
     .then(response => {
        // on success code
      })
     .catch(error => {
         // on error code
      })

相关问题