解决jwt-authentication-for-wp-rest-api在浏览器Safari上Get请求出现403 Forbidden的问题

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 });
}
jwt

对于多数浏览器,发出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所有,转载请注明出处。)