PHP为什么在$SERVER变量之前使用http会有差异?

PHP为什么在$SERVER变量之前使用http会有差异?,php,Php,我搜索了又搜索,我被难住了 我试图在登录到代理后捕获页面的url 代理登录前页面的url: https://example.org/mypage.php https ://example-org.proxy.example.org/mypage.php 代理登录后页面的url: https://example.org/mypage.php https ://example-org.proxy.example.org/mypage.php 当我尝试使用 $lnk = "https ://$

我搜索了又搜索,我被难住了

我试图在登录到代理后捕获页面的url

代理登录前页面的url:

https://example.org/mypage.php
https ://example-org.proxy.example.org/mypage.php
代理登录后页面的url:

https://example.org/mypage.php
https ://example-org.proxy.example.org/mypage.php
当我尝试使用

$lnk = "https ://$_SERVER['HTTP_HOST']$_SERVER['REQUEST_URI']";
输出符合要求:

https ://example-org.proxy.example.org/mypage.php
当我不使用https://而只捕获$SERVER变量时,输出缺少url的代理部分

$lnk = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
输出:

example.org/mypage.php
后者的意义就好像我转储$SERVER数组时发现url的代理部分丢失一样。如何在第一个示例中查找代理信息

更新:
我在Chrome中使用了一个Inogneto窗口,并在IE上进行了尝试,同样的行为。 我尝试了以下方法
$lnk=$_服务器['HTTP_主机].$_服务器['REQUEST_URI']
$lnk2=“https://”$lnk


呼出这两个变量会得到与上面相同的结果。如果我将http://更改为“bla”或“bla://”,则$lnk和$lnk2都会显示预期的非代理url。看来http://和https://正在以某种方式改变这一点,就我的一生而言,我不知道是如何改变的。

结果表明,代理可能在流上进行搜索和替换。我添加了几行代码,以便在创建之后立即将$lnk2的内容打印到一个文件中,果然它缺少了预期的代理url。很高兴知道我没有发疯。

在测试第二个示例时,您确定您通过代理连接了吗?您的代理是否处理https?它必须非常小心地配置才能代理SSL连接,并且(可能)还需要客户端黑客。服务器[HTTP\U主机]的值不能根据插入它的字符串的其他部分而改变。是的,我通过代理连接,是的,它接受https。我登录到代理并重新加载页面,页面上显示了变量的两个版本。