我编写了一个PHP脚本,我想在同一台服务器上的几个域上使用(指向相同的脚本).我想为脚本添加功能,以便我可以随时找出脚本正在使用哪个域.HTTP_HOST可用于查找域,但是,我已经读过它不可靠,特别是对于旧浏览器.我的理解是大多数Apache服务器都使用相同的方法使用相同的方法,所以如果它不是主机提供商的问题,它应该不是我的代码的问题.
任何人都可以验证这一点并清除混淆吗?
编辑:我更正了:HTTP 1.0请求中不存在HOST标头.见@ Bruno的回答.出于安全考虑,将矿井留在原地
我所知道的HTTP_HOST唯一的问题是安全问题,而不是兼容问题.
安全问题源于HTTP_HOST用户发送的事实.如果Web服务器设置不正确和/或错误,则任意HTTP_HOST值都可以进入您的站点/脚本(请参阅此处以获取详细讨论).您的应用程序需要为此做好准备.
永远不要信任HTTP_HOST是好的(例如,在PHP脚本中处理它之前为它设置一个允许值数组是个好主意):
<?php
$allowed_hosts = array("domain1.com", "domain2.com", "domain3.com");
if (!in_array(strtolower($_SERVER["HTTP_HOST"]), $allowed_hosts))
die ("Unknown host name ". $_SERVER["HTTP_HOST"]);
Run Code Online (Sandbox Code Playgroud)