PHP中 HTTP_HOST 和 SERVER_NAME 的区别 MiMi Posted on 2010.07.02 10:25 // 2 Comments

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

最近在开发站群软件,用到了根据访问域名判断子站点的相关问题。PHP获取当前域名有两个变量 HTTP_HOST 和 SERVER_NAME,我想知道两者的区别以及哪个更加可靠。

首先我想说,百度上那些转来转去的文章都是扯淡!
有说相同的,有说不同的,都没说明原因,没经过验证就互相转来转去的,浪费观众时间。

下面说说本人经过亲自验证 + 查阅官方文档 + 官方BUG列表 + 官方邮件列表 + sitepoint + webmasterworld + google的总结:

相同点:
当满足以下三个条件时,两者会输出相同信息。
1. 服务器为80端口
2. apache的conf中ServerName设置正确
3. HTTP/1.1协议规范

不同点:
1. 通常情况:
_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。

2. 当服务器为非80端口时:
_SERVER["HTTP_HOST"] 会输出端口号,例如:mimiz.cn:8080
_SERVER["SERVER_NAME"] 会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT

3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:
httpd.conf配置如下:
<virtualhost *>
ServerName mimiz.cn
ServerAlias www.mimiz.cn
</virtualhost>
客户端访问域名www.mimiz.cn
_SERVER["HTTP_HOST"] 输出 www.mimiz.cn
_SERVER["SERVER_NAME"] 输出 mimiz.cn

所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。

PHP - $_SERVER $_SERVER $_SERVER服务器执行环境信息 说明: 它是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。 demo 这个 API 主要是提供与返回服务器相关信息,我这里是本... 阅读详情

相关推荐

MATLAB实战:Gardner定时同步算法实现与BER曲线优化指南

本文详细介绍了Gardner定时同步算法在MATLAB中的实现与优化方法,重点解析了算法原理、关键步骤实现及BER曲线绘制中的常见问题解决方案。通过优化参数设置系统架构,提升数字通信系统的符号同步性能,为QPSK、QAM等调制系统提供实用参考。

weixin_29085865的博客 215

HTTP头注入

重新认识被人遗忘的HTTP头注入 前言 注入类漏洞经久不衰,多年保持在owasp Top 10的首位。今天就聊聊那些被人遗忘的http头注入。用简单的实际代码进行演示,让每个人更深刻的去认识该漏洞。 HOST注入 在以往http1.0中并没有host字段,但是在http1.1中增加了host字段,并且http协议在本质也是要建立tcp连接,而建立连接的同时必须知道对方的ip端口,然后才能...

zhangge3663的博客 1486

安全监控:人员行为分析_(2.人员行为分析基础理论

人员行为分析是指利用计算机视觉技术对视频中的人类行为进行实时或离线检测、识别理解的过程。视频采集:通过摄像头等设备获取视频数据。视频预处理:对视频数据进行噪声过滤、图像增强等处理,以便后续分析。特征提取:从视频中提取出与人员行为相关的特征,如人体姿势、动作轨迹等。行为识别:利用机器学习或深度学习模型对提取的特征进行分类,识别出具体的人员行为。行为理解:对识别出的行为进行进一步分析,理解其背后的意图或状态。在人员行为分析中,常用的公开数据集包括UCF101、HMDB51、ActivityNet等。

zhubeibei168的博客 1308

PHP如何取得服务器地址-$_SERVER['HTTP_HOST']靠不住

php中,我们一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。 [code="php"]php手册中的解释如下: “HTTP_HOST” 当前请求的 Host: 头信息的内容。[/code] 一般来说,这样子不会遇到什么问题,在一些常见的php框架中,如PFC3FLEA也是基于该预定义变量。 然而最近在做的一个项目,程序移交到客...

呆子 1506

php $_SERVER中的SERVER_NAME HTTP_HOST区别

今天再次遇到了这个问题通过$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']获取域名及请求的URL的问题,便再次百度了,发现没学习一次都有新的知识,便分享出来,供有需要的同学学习。 转载一下 最近在开发站群软件,用到了根据访问域名判断子站点的相关问题。PHP获取当前域名有两个变量 HTTP_HOST SERVER_NAME,我想知道两者的

shao.bing的专栏 2万+

PHP获取当前域名$_SERVER['HTTP_HOST']$_SERVER['SERVER_NA

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33918114的博客 484

PHP $_SERVER['HTTP_HOST']与$_SERVER["SERVER_NAME"]的区别

PHP获取当前域名有两个变量 HTTP_HOST SERVER_NAME区别

鸭子退步踩死鹅 922

PHP SERVER_NAMEHTTP_HOST区别

相同点: 当满足以下三个条件时,两者会输出相同信息。 1. 服务器为80端口 2. apache的conf中ServerName设置正确 3. HTTP/1.1协议规范 不同点: 1. 通常情况: _SERVER[“HTTP_HOST”] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。 _SERVER[“SERVER_NAME”] 默认情况下直接输出apac

lxf0613050210的博客 937

php命令行 http host,php $_SERVER中的SERVER_NAME HTTP_HOST区别以及REQUEST_URI的讲解

今天再次遇到了这个问题通过$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']获取域名及请求的URL的问题,便再次百度了,发现没学习一次都有新的知识,便分享出来,供有需要的同学学习。转载一下最近在开发站群软件,用到了根据访问域名判断子站点的相关问题。PHP获取当前域名有两个变量 HTTP_HOST SERVER_NAME,我想知道两者的区别以及哪个更加...

weixin_29382667的博客 599

PHP中与 $_SERVER['HTTP_HOST'] $_SERVER['SERVER_NAME'] 区别

我们应该尽量使用 $_SERVER["HTTP_HOST"] 当满足以下三个条件时两者一样: 1、服务器端口默认80 2apache或nginx中ServerName设置正确 3、HTTP/1.1协议规范 两者区别: 1,$_SERVER['HTTP_HOST']会根据客户端http请求输出信息。 $_SERVER['SERVER_NANE']会根据apache或nginx的配

hanjiansky的专栏 931

$_SERVER['HTTP_HOST']

php中,我们一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。 php手册中的解释如下: “HTTP_HOST” 当前请求的 Host: 头信息的内容。

tingliting的专栏 1422

h5网站 php 区别,PHP常用$_SERVER解析及['HTTP_HOST']['SERVER_NAME']的区别

最近在折腾一个半开源的建站程序(什么叫半开源?你懂得!),给客户把模板做好了,网站放到服务器上了,客户那边把数据也都上传了很多,但是突然发现分页出现了问题,域名成了 localhost ,然后就是各种查找原因,重新安装部署,问题依旧没法解决,将文件数据库全部搬到本地来确是好好的。折腾了好久,最后没办法了看了看分页程序是怎么写的,原来是 _SERVER["SERVER_NAME"] 惹的祸,服务器...

weixin_42302418的博客 531

nginx的 ngx.var ngx.ctx ngx.req

ngx.var 是获取 Nginx 的变量,需要经历字符串 hash、hash 表查找等过程 ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lua 的模块上下文(ctx_ref) 使用 ngx.ctx 比 ngx.var 往往是更好的选择 https://moonbingbing.gitbooks.io/openresty-best-p...

weixin_30364325的博客 652

nginx(三十)变量终谈

① $host 备注:$host是'ngx_http_core_module模块'内部的一个'变量' ++++++++++++"$host 的值解读"++++++++++++ 优先级1: 如果'请求行 [Request Line]' 中有 'host name' -->"不常见" eg: 请求行形式 'GET http://example.com/ HTTP/1.1' 中的 host name 就是 'example.com',也即是此时'$host'值 优先级2: 如果'请求..

wzj_110的博客 7188

为什么$_SERVER['HTTP_HOST']有时是不可控的

最近在看一套程序的时候, 看到一段代码。如果SERVRT['HTTP_HOST']可以控制的话, 可以造成一个漏洞,本地是测试成功了, 但是在测试demo的时候就失败掉了。所以这里来谈谈SERVER['HTTP_HOST']为什么有时会不可控。 123456 GET /123.php HTTP/1.1 Host: localhost User-Agent: Mozilla/5....

测试 2253

$_SERVER['SERVER_NAME'] $_SERVER['HOST']的区别

在通常情况下,由于这两个功能类似,也很难发现这两个的区别。 $_SERVER['SERVER_NAME'] : 根据nginx配置中的server name 来提取。 $_SERVER['HOST'] : 根据http的请求的输出信息提取数据,所以当非80端口时也会带上端口号,此时的值为 $_SERVER['SERVER_NAME'] : 端口号。 ...

sum_yf的博客 1408

php中$_SERVER 详解

Array ( [HTTP_HOST] =&gt; localhost [HTTP_CONNECTION] =&gt; keep-alive [HTTP_UPGRADE_INSECURE_REQUESTS] =&gt; 1 [HTTP_USER_AGENT] =&gt; Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, ...

alashan007的博客 1171

PHP中的$_SERVER['HTTP_HOST']与$_SERVER['SERVER_NAME']的区别

PHP中的$_SERVER['HTTP_HOST']与$_SERVER['SERVER_NAME']的区别 通过:$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']可以获取域名及请求的URL。 1、变量HTTP_HOSTSERVER_NAME都是获取当前域名 2、当满足以下3个条件的时候,两者会输出相同的信息      A、服务器端口号为80  

感恩、奋进、自信 4868

PHP中,HTTP_HOSTSERVER_NAME有什么区别

我清理了我当前在Windows XP上的XAMPP环境的灰尘(使用Apache HTTPD 2.2.1PHP 5.2.8),启动了它,创建了一个打印这两个值的PHP页面,并创建了一个使用URLConnection。然而,你现在应该意识到,一个是由客户端控制的值,因此在业务逻辑中可能不可靠,另一个是由服务器控制的值,更可靠。头的Java测试应用程序,并进行了测试,结果确实是如此(不正确)。,了解到问题的根源在于所使用的web服务器,在请求。获取的值,它是客户端实际用作请求的目标主机。

m0_62946064的博客 623

php 解析host,分析PHPHTTP_HOSTSERVER_NAME的不同点

PHP开发过程中,获取URL常常会用到两个参数:HTTP_HOSTSERVER_NAME,有时它们输出的结果是一样的,所以很多人会混淆它们的作用。今天就大家聊聊HTTP_HOSTSERVER_NAME的不同点,了解它们的区别。_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。_SERVER["SERVER_NAME"] 默认情况下直...

weixin_32452829的博客 744
上一篇: 关于iconv('gbk', 'utf-8',$str)会调失字符的原因
下一篇: 去掉 power by ecshop的方法
lee3f
博客等级 码龄24年 15粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值