为什么我在标头的授权部分传递 JWT 令牌时收到 431 状态错误?

问题描述 投票:0回答:1

所以我正在使用 Express 和 Node 创建一个全栈 React 应用程序。我已经实现了 auth0 进行身份验证和授权,但出现以下错误,有人对如何解决它有任何建议吗?谢谢!

"Failed to load resource: the server responded with a status of 431 (Request Header Fields Too Large)"

以下是我调用 api/tasks 路由并从 Auth0 传入 jwt 访问令牌的类组件。

import React, { Component } from 'react';
import axios from "axios";
import {withAuth0} from "@auth0/auth0-react";
import config from "../auth_config.json";
const {apiOrigin = "http://localhost:3001"} = config

componentDidMount() {
        const getProtectedTasks = async () => {
            const {getAccessTokenSilently} = this.props.auth0;
            const accessToken = await getAccessTokenSilently();
            try {
                const token = accessToken;
                const self = this;
                const response = await axios.get(`${apiOrigin}/api/tasks`, {
                    headers: {
                        Authorization: `Bearer ${token}`
                    }
                })
                self.setState({
                    allTasks: response.data
                })

            } catch {

            }
        }
        getProtectedTasks()

    }

以下是我处理 get api/tasks 端点的代码

const db = require("../models");
const jwt = require("express-jwt");
const jwksRsa = require("jwks-rsa");

module.exports = function (router) {
    const authorizeAccessToken = jwt({
        secret: jwksRsa.expressJwtSecret({
            cache:true,
            rateLimit:true,
            jwksRequestsPerMinute:5,
            jwksUri: `https://task-motivator.us.auth0.com/.well-known/jwks.json`
        }),
        audience: "https://quickstarts/api",
        issuer: "https://task-motivator.us.auth0.com",
        algorithms: ["RS256"]
    });

    router.get("/api/tasks", authorizeAccessToken, (req, res) => {
        db.Task.findAll({}).then(data => {
            res.json(data);
        });
    });
node.js reactjs express authorization auth0
1个回答
0
投票

由于 JWT 令牌的长度,我也遇到了同样的问题。如果您不提供更多数据,则很难知道原因(正如人们在评论中所说的那样),但请尝试使您的 data-to-jwt-sign 更短一些!

© www.soinside.com 2019 - 2024. All rights reserved.