我遇到了一个非常奇怪的问题,实现 axios 拦截器来处理过期的令牌并刷新它。
\n我正在使用访问和刷新令牌实施 JWT 身份验证。
\n当请求发送到需要 JWT 身份验证的 API 路由时,请求拦截器会确保标头包含带有不记名令牌的授权。响应拦截器检查是否需要新的访问令牌,发送刷新请求,最后使用新配置更新 axios 实例。
\n我按照 Dave Gray 的视频编写了代码,但使用了 TypeScript。
\n测试此代码时,我将刷新令牌生存期设置为非常长,同时将访问令牌生存期设置为 5 秒。过期后,当对受保护路由的请求发生时,一切都按照计划进行\xe2\x80\x94来自后端的日志包含两个成功完成的请求:(1)到带有 401 响应的受保护路由,然后(2 ) 刷新请求。
\n此时,我在浏览器控制台(Chrome 和 Safari)中看到 DOMException,它指出setRequestHeader由于源代码函数不是有效的标头值而无法执行。当然,事实并非如此!这段代码是这样的。
const axiosPrivate = axios.create({\n baseURL: BASE_URL,\n headers: { "Content-Type": "application/json" },\n withCredentials: true,\n});\n\ninterface IRequestConfig extends AxiosRequestConfig {\n sent?: boolean;\n}\n\nconst useAxiosPrivate = () => {\n const { auth } = useAuth()!;\n const refresh = …Run Code Online (Sandbox Code Playgroud) 在类的方法中:
def weight(self, grid):
...
if self.is_vertical:
self = self.T
...
Run Code Online (Sandbox Code Playgroud)
self如果条件为真,我想重新分配给它的转置值。根据 -if语句,我想self稍后在其原始或转置条件下在方法中使用。
据我了解,在方法中,self只是一个参数名称,而不是真正的引用或指向类实例的指针,如在 C++ 或类似语言中,因此我可以自由地重新分配它以在方法范围内使用.
我的问题是为什么 PyCharm 的检查信息警告我
...第一个参数,例如“self”或“cls”,在方法中重新分配。在大多数可以想象的情况下,这种重新分配没有意义,它表明一个错误。
虽然它工作正常?为什么会提示错误?