PHP获取X-Forwarded-Host请求头报Undefined index错误如何解决
错误原因
PHP 对存入$_SERVER的HTTP请求头有固定的格式化规则:
- 所有请求头名称转为全大写
- 名称中的横杠
-替换为下划线_ - 统一添加
HTTP_前缀
所以你传入的X-Forwarded-Host请求头,在$_SERVER中对应的键名不是X-Forwarded-Host,而是HTTP_X_FORWARDED_HOST,直接访问不存在的键自然会报未定义索引错误。
解决方法
方法1:直接使用格式化后的键名
性能最高,无需调用额外函数,适配所有PHP运行环境:
<?php // 先判断索引是否存在,避免请求未携带该头时再次报错 $custom_header = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : ''; echo $custom_header; ?>
方法2:使用getallheaders()函数直接读取请求头
如果需要读取多个自定义请求头,不想手动拼接前缀,可以用该函数,它会返回所有请求头的关联数组,键名和你传入的请求头名称完全一致,XAMPP自带的Apache环境完全支持:
<?php $headers = getallheaders(); $custom_header = isset($headers['X-Forwarded-Host']) ? $headers['X-Forwarded-Host'] : ''; echo $custom_header; ?>
内容的提问来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

