Reactjs 格式错误的JWTException:JWT字符串必须正好包含2个句点字符

Reactjs 格式错误的JWTException:JWT字符串必须正好包含2个句点字符,reactjs,spring-boot,react-redux,jwt,axios,Reactjs,Spring Boot,React Redux,Jwt,Axios,我正在创建一个react项目,其中包含一个集成了jwt的springboot后端。 虽然我可以让我的注册api在邮递员身上工作。当我通过react应用程序(通过axios)调用API时,它会发出一个格式错误的JWTException。甚至在我将spring安全性集成到后端之前,GETAPI调用就已经开始工作了。 我认为这与我的HTTPClient.js文件有关,它在该文件中创建了这个问题。 这是下面的 import axios from 'axios' const id_token = "se

我正在创建一个react项目,其中包含一个集成了jwt的springboot后端。 虽然我可以让我的注册api在邮递员身上工作。当我通过react应用程序(通过axios)调用API时,它会发出一个格式错误的JWTException。甚至在我将spring安全性集成到后端之前,GETAPI调用就已经开始工作了。 我认为这与我的HTTPClient.js文件有关,它在该文件中创建了这个问题。 这是下面的

import axios from 'axios'

const id_token = "secret";
axios.defaults.headers.post['Content-Type'] = 'application/json';

var instance = null;

export const setAuth = () => {
instance = axios.create({
    baseURL: '',
    timeout: 30000,

    headers: {
        'Authorization': 'Bearer ' + localStorage.jwt,
        'Content-Type': 'application/json'
    }
}
)

instance.interceptors.response.use(function (response) {
    return response;
}, function (error) {
    if (error.response.status === 401) {
        localStorage.removeItem('jwt');
        localStorage.removeItem('user');
        window.location = '/'
    }
    else {
        return Promise.reject(error);
    }
});
}

 export const Get=(route, data)=>{
    instance|| setAuth()

    return instance.get(route,data)
 }

 export const Post = (route, data) => {
  instance || setAuth()
  return instance.post(route, JSON.stringify(data))
 }

export const Put = (route, data) => {
instance || setAuth()
return instance.put(route, JSON.stringify(data))
}

export const Delete = (route, data) => {
instance || setAuth()
return instance.delete(route, JSON.stringify(data))
}
编辑

cache-control: no-cache, no-store, max-age=0, must-revalidate
connection: close
content-length: 0
date: Sat, 14 Dec 2019 14:47:21 GMT
expires: 0
pragma: no-cache
x-content-type-options: nosniff
x-frame-options: DENY
X-Powered-By: Express
x-xss-protection: 1; mode=block
POST /register HTTP/1.1
Host: localhost:3000
Connection: keep-alive
Content-Length: 193
Accept: application/json, text/plain, */*
Origin: http://localhost:3000
Authorization: Bearer undefined
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36
Content-Type: application/json
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: http://localhost:3000/Welcome
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

这是我的请求头

我尝试在请求中根本不发送授权头。不能将其定义为未定义,它不应该存在。

请在将请求头发送到后端时发布其外观。您可以通过在浏览器中检查请求来完成此操作。其次,不要将jwt存储在本地存储中。这将使您的应用程序容易受到跨站点脚本攻击(XSS)。您应该始终使用HttpOnly标志设置为true的Cookie。@ThomasAndolf我已经添加了请求头。承载令牌未定义,但要求spring安全性允许此请求anyway@ThomasAndolf然后你必须处理CSRF。使用这两种方法都有风险。@Joe我从来没有说过你会得到充分的保护,这是你选择中较小的邪恶。