Python 刷新JWT令牌时不允许使用405方法-Django,Angular

Python 刷新JWT令牌时不允许使用405方法-Django,Angular,python,django,angular,jwt,jwt-auth,Python,Django,Angular,Jwt,Jwt Auth,我在Django/Angular项目中使用JWT身份验证,当旧的访问令牌过期时,尝试获取新的访问令牌时,会发生奇怪的事情 我得到一个不允许的405 POST方法。我已经设置了corsheaders,允许所有方法和外部主机访问该应用程序。 当我发送刷新令牌以获取新的访问令牌时,请求看起来很好 我注意到,它只发生在向django发送POST请求以在显示数据之前访问某些数据的页面上。 当我在一个发送GET请求或什么都不发送的页面上时,获取新令牌的效果非常好 请看一下代码和回复 错误响应 设置.py

我在Django/Angular项目中使用JWT身份验证,当旧的访问令牌过期时,尝试获取新的访问令牌时,会发生奇怪的事情

我得到一个不允许的405 POST方法。我已经设置了corsheaders,允许所有方法和外部主机访问该应用程序。 当我发送刷新令牌以获取新的访问令牌时,请求看起来很好

我注意到,它只发生在向django发送POST请求以在显示数据之前访问某些数据的页面上。 当我在一个发送GET请求或什么都不发送的页面上时,获取新令牌的效果非常好

请看一下代码和回复

错误响应

设置.py

CORS_ORIGIN_WHITELIST = (
  '127.0.0.1:4200',
  '127.0.0.1:8082',
)

CORS_ALLOW_METHODS = [
  'DELETE',
  'GET',
  'OPTIONS',
  'PATCH',
  'POST',
  'PUT',
]

CORS_ALLOW_HEADERS = [
  'accept',
  'accept-encoding',
  'authorization',
  'content-type',
  'dnt',
  'origin',
  'user-agent',
  'x-csrftoken',
  'x-requested-with',
]
处理401错误并在angular中获取新令牌

private handle401Error(请求:HttpRequest,下一步:HttpHandler):可观察{
如果(!this.isRefreshing){
this.isRefreshing=true;
this.refreshTokenSubject.next(null);
返回此.userService.refreshToken()管道(
开关映射((令牌:任意)=>{
this.isRefreshing=false;
this.refreshTokenSubject.next(token.access);
返回next.handle(this.addToken(request,token.access));
}));
}否则{
返回此.refreshTokenSubject.pipe(
过滤器(令牌=>令牌!=null),
以(1)为例,
开关映射(访问=>{
返回next.handle(this.addToken(请求,访问));
})
);
}
}
刷新令牌(){
返回this.http.post(`${this.apirl}/api/token/refresh`{
“刷新”:this.getRefreshToken()
}).pipe(tap)(令牌:任意)=>{
this.setJwtToken(tokens.access);
},err=>{
控制台日志(err);
}));
}
我试过使用corsheaders,我试过打印所有发送的数据和所有的拦截器,但是我没有主意了


这些POST请求是否有可能以某种方式切换到错误的URL?

是否假设是POST请求?是的,刷新令牌转到/api/token/refresh,我应该接收访问令牌,而不是发送到错误的URL确保您的api正在接受POST请求,。