PHP HTTPS到HTTP

时间:2014-10-22 23:12:37

标签: php http iis https

我在PHP中使用头函数时遇到了困难。 对该功能的调用是在安全的HTTPS页面上启动的。每当我用http://调用头函数时,某处某处就会将协议更改为HTTPS。

在我的程序中,这个例子:

header("Location: http://www.google.com");

转而转向https://www.google.com

我的环境是IIS 7.5 Windows 2008 64位 带有快速CGI的PHP 5.5.12

在IIS或php.ini中是否有意外启用的内容会自动强制http到https?

从http页面启动代码,http到http工作,http到https工作和https到https工作时不会发生这种情况。但是,http到http失败了。

我一直在搜索,大多数结果都是通过向我展示强制http到https的方法来改变我的问题。我需要相反的。

提前感谢您的任何帮助!

编辑:Google是一个示例网址。遗憾。

header("Location: http://www.systronicsinc.com/");

是我失败的实际网址。这会保持重定向到https://www.systronicsinc.com/

这是Fiddler的原始标题。

HTTP/1.1 303 See Other
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Location: https://www.systronicsinc.com/
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.5.12
Set-Cookie: PHPSESSID=va1hh3ff8h0buus689kf86eoc1; path=/
Date: Fri, 24 Oct 2014 17:39:34 GMT
Content-Length: 156

<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="http://www.systronicsinc.com/">here</a></body>

我觉得有趣的是,正文中的链接保留了最初设置的原始http协议,但标题中的Location字段将其修改为https。我一直在搜索IIS和我的php.ini文件。我看不到任何能够决定这种行为的事情。也许这些额外的信息会引发某人的思考。谢谢!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

不,Google会将您重定向到安全页面。

他们可能使用的功能类似于我的https功能。随意使用。

function https(){
  $sv = $_SERVER;
  if(!isset($sv['HTTPS'])){
    header("LOCATION:https://{$sv['SERVER_NAME']}{$sv['PHP_SELF']}"); die;
  }
}
function http(){
  $sv = $_SERVER;
  if(isset($sv['HTTPS'])){
    unset($_SERVER['HTTPS']);
    header("LOCATION:http://{$sv['SERVER_NAME']}{$sv['PHP_SELF']}"); die;
  }
}