基本情况和基本相关信息:
我有一个在开始之前执行的php代码< doctype>标签.希望是(如有必要)在加载任何其他内容之前根据用户的浏览器语言首选项发送重定向.
该脚本尝试根据支持的最高语言首选项执行两项操作:
>使用php:setcookie()创建一个包含两个字母的语言代码的cookie.
>示例cookie name = value:x_language = es
>使用php:header(“Location:”.$requestedSite);重定向到子域,
>示例域名:es.domain.com
例:
if (isset($_COOKIE['x_language'])) {
-Determine correct subdomain based on cookie value-
-If not currently on that subdomain, redirect to it-
} else {
setcookie('x_language','es',time() + 31536000 ,'/','.domain.com' );
header("Location: " . $requestedSite);
}
问题:
Firefox完美运行. Chrome(和其他浏览器)根本无法识别Cookie.
我把它归结为:
> print_r($_ COOKIE)在Firefox中正常工作,并返回一个可爱的填充数组.
> print_r($_ COOKIE)在Chrome中失败,并返回一个空数组.
这是问题的核心,我的功能无法识别cookie的存在,因为Chrome没有.
>我确保每个浏览器都接受cookie.
>我已经检查了开发工具,以确保所有浏览器都存在cookie,(确实如此).
>我意识到cookie的值在下一页加载之前是不可用的,但这不是问题.即使在设置之后,也不会读取.
>初始setcookie()之上没有输出;
那么如何让Chrome(和其他浏览器)识别自己的Cookie?!有谁知道为什么这会在Firefox上完美运行但在其他地方失败?
在云雀上我决定尝试这个.我创建了一个只包含以下内容的文件
print_r($_COOKIE);
?>
再一次,我在Firefox中看到了cookie数组.同时,在Chrome,IE,Opera,Safari中,我得到一个空数组.这可能是服务器问题吗?