解决jwt-authentication-for-wp-rest-api在浏览器Safari上Get请求出现403 Forbidden的问题
2022-02-22
WordPress Rest Api通常接收Get请求,不会要求用户认证,但是在浏览器Safari上可能会出现403 Forbidden的问题。
笔者使用的用户认证插件是jwt-authentication-for-wp-rest-api,每次请求headers中需要带上服务端发放的Authorization,参考:
import axios from 'axios';
import Session from './session';
const get = (reqUrl, params) => {
params = params || {};
const sessionKey = Session.get();
const headers = {
'Authorization': 'Bearer' + sessionKey
};
return axios.get(reqUrl, { params, headers });
}
对于多数浏览器,发出Get请求,带不带Authorization凭证都能得到正确响应,然而在Safari上挂了,报错:
{
"code": "jwt_auth_invalid_token",
"message": "Wrong number of segments",
"data": {
"status": 403
}
}
不太清楚为什么Get请求也会做身份验证,也许和浏览器某些特定系统设置有关,没有深层研究。
这种情况下,解决403 Forbidden的方法很简单:headers去除Authorization凭证即可。
import axios from 'axios';
const get = (reqUrl, params) => {
params = params || {};
return axios.get(reqUrl, { params });
}
(版权归cpury.com所有,转载请注明出处。)