我在PHP中使用头函数时遇到了困难。 对该功能的调用是在安全的HTTPS页面上启动的。每当我用http://调用头函数时,某处某处就会将协议更改为HTTPS。
在我的程序中,这个例子:
header("Location: http://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文件。我看不到任何能够决定这种行为的事情。也许这些额外的信息会引发某人的思考。谢谢!
答案 0 :(得分:0)
Google使用SSL,因此https://为其网站。
请参阅:https://support.google.com/websearch/answer/173733?hl=en
和:https://www.seroundtable.com/google-ssl-drops-query-data-14188.html
答案 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;
}
}