好奇的问题。
新开发的网站,使用第三方登录系统,使用会话(惊喜!)。网站适用于所有实例,所有浏览器除 Internet Explorer 11(以及可能以前的版本,未经检查)。
Header
不会在每个受影响的网页上进行重定向_
。a)每个页面都有一个控制器文件,其中包含标题信息:
header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
header("Expires: Thu, 19 Nov 2011 08:52:00 GMT"); // Date in the past
header('Content-Type: text/html; charset=utf-8');
header("X-Clacks-Overhead: GNU Terry Pratchett");
header_remove("X-Powered-By");
header("X-XSS-Protection: 1; mode=block");
header("X-Frame-Options: SAMEORIGIN");
header("X-Content-Type-Options: nosniff");
header("Content-Language: en");
header("Content-Security-Policy: upgrade-insecure-requests;");
header("Referrer-Policy: origin-when-cross-origin"); //referrer for Chrome
header("Referrer-Policy: strict-origin-when-cross-origin");
if (isset($_SERVER['HTTP_USER_AGENT']) &&
(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)){
header('X-UA-Compatible: IE=edge,chrome=1');
}
b)作为此过程的一部分;执行cookie检查以了解是否在客户端浏览器上启用了cookie。这是通过 登录/访问控制和公共站点区域完成的。
if($_COOKIE['cookieEnabled'] !== "yes") {
\setcookie('cookieEnabled', "yes", time() + 42000, "/", $_SERVER['HTTP_HOST'], true, true);
}
它只是一个表示“是”的cookie,如果cookie尚未设置,则启用cookie。简单。
c)在此之下;有控制器代码加载会话变量,并为第三方管理员做其他事情。
// Create / Include the Session Object - Session.php
$session = new Session($db);
d)我已在Session.php
__construct
内设置了测试语句来执行此操作:
session_start();
if($_COOKIE['cookieEnabled'] !== "yes" && empty($_SESSION)) {
error_log("INFO: An access attempt without a session or cookie was attempted...");
if($_COOKIE['cookieEnabled'] !== "yes"){
error_log("Cookie does not appear to be enabled");
}
die("unimportant debug error");
}
请注意,会话数组永远不会为空,因为它是在之前的页面上预先填充的;
e) [local] PHP.ini因此:
session.cookie_secure=1
default.charset=utf-8
error_log=/home/domainaccount/error/PHP_error.log
session.save_path=/home/domainaccount/sessionz
session.cookie_domain=domain.org.uk
注意:网络路径为:
/home/domainaccount/public_html/
已使用phpinfo()
检查PHP.ini值并正确设置。
我在各种浏览器中加载网站,它登录得很好,所有工作,会话数据都被携带。
然而,在IE11上却没有。它只是返回一个空白屏幕,没有错误,没有反馈(也就是会话数据传回登录页面),没有基于代码的错误日志。
错误日志显示:
信息:尝试了没有会话或cookie的访问尝试......
很多次但没有迹象表明 cookie 被拒绝,只是会话。
不出所料,登录页面为成功和登录尝试失败提供了header
位置重定向。
IE版本号:11.248.16299.0。
IE Cookie设置:接受第一方Cookie,接受第三方Cookie,始终允许会话Cookie。
1)为什么这只发生在IE上?
2)我该如何解决这个问题(更改我的标题,cookie设置等?)
答案 0 :(得分:3)
如果服务器时间与客户端时间相比过去,则某些版本的IE会静默删除cookie。正确设置服务器/客户端时间可能会有帮助。
这太可怕了-服务器将比客户端浏览器更精确地计时。您可以完全参考吗?
我在GitHub上的其他人的描述中偶然发现了它,并解决了我的问题。
请注意,由于您没有在域中明确标注下划线,因此您是否知道根据RFC,IE中的前导数字也是无效的URL?