如何在WordPress的GET请求中获取自定义HTTP头部信息?
WordPress REST API 无法获取自定义请求头部的问题排查
WordPress完全支持获取自定义请求头部,你的问题大概率出在以下几个环节:
服务器过滤下划线开头的头部
多数服务器(比如Nginx、Apache)默认会丢弃以下划线开头的HTTP头部,因为部分服务器配置将下划线视为不安全字符。把自定义头部从_key改成X-Key这类以X-前缀开头的格式即可规避这个问题。GET请求的缓存或头部限制
部分浏览器或环境对GET请求的自定义头部会有额外限制,或者缓存会干扰请求发送。可以在请求中添加Cache-Control: no-cache头部,确保请求是实时发送的。头部名称的大小写转换
WordPress的get_header()方法不区分大小写,但服务器会将自定义头部转换为大写,并用下划线替换横杠,存入$_SERVER全局变量(比如X-Key会变成HTTP_X_KEY)。可以通过直接打印$_SERVER变量,先确认服务器是否实际接收到了头部。
修改后的代码示例
前端Axios请求:
let response = await axios.get('url', { headers: { 'X-Key': 'mykey', 'Cache-Control': 'no-cache' } });
后端WordPress API处理:
public function get_option( $request ) { // 使用WP_REST_Request的get_header方法获取 $data = $request->get_header('x-key'); // 也可以直接从$_SERVER验证是否接收到 // $data = $_SERVER['HTTP_X_KEY'] ?? ''; return $data; }
内容的提问来源于stack exchange,提问作者Vueer
相关产品推荐
相关产品推荐

