linux nginx/1.14.1 php7.3 下 setcookie 在chrome浏览器下无效

php代码:没有特点

setcookie($n,$v,$t,"/");//name,value,time

服务端:Centons 7.4
Web服务器:Nginx 1.14.1
php版本: 7.3、7.2、5.6均切换过

问题:360急速浏览器(11.0.2031.0)、IE(11.437.17663.0)、火狐浏览器(66.0.2)下cookie很正常,但是在chrome(73.0.3683.86)、opera(58.0.3135.90)下就不正常

详情:
chrome
headers中cookie显示:

Set-Cookie: userid=(数字)
Set-Cookie: username=(字符串)
Set-Cookie: userck=(字符串)

控制台:Application中Cookie只有

图片描述

在地址前的网站信息中可以看到
图片描述
图片描述


火狐 headers中cookie显示:

Cookie:PHPSESSID=9cq8pgkbl0e3agi0qa60uou1c3; userid=(数字); username=(字符串); userck=(字符串)

控制台:存储中cookie有

userid=(数字)
username=(字符串)
userck=(字符串)




搞不明白是哪里出错了。

阅读 3.3k
2 个回答

Chrome 73.0.3683.103
无法复现

明显的 Response Headers 不一样。

把你的真实代码中的 $n 和 $v 贴出来看一下。

<?php

header('Content-Type: text/txt');

$n='name';
$v='value';
$t=0;
setcookie($n,$v,$t,"/");//name,value,time
print_r($_SERVER);

Response Headers:

HTTP/1.1 200 OK
Date: Mon, 15 Apr 2019 05:10:25 GMT
Server: Apache/2.4.18 (Ubuntu)
Set-Cookie: name=value; path=/
Content-Length: 1546
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/txt;charset=UTF-8

输出

Array
(
    [HTTP_HOST] => 192.168.1.101
    [HTTP_CONNECTION] => keep-alive
    [HTTP_CACHE_CONTROL] => max-age=0
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
    [HTTP_DNT] => 1
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    [HTTP_REFERER] => http://192.168.1.101/
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7,zh-TW;q=0.6
    [HTTP_COOKIE] => name=value
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    [SERVER_SIGNATURE] => <address>Apache/2.4.18 (Ubuntu) Server at 192.168.1.101 Port 80</address>

    [SERVER_SOFTWARE] => Apache/2.4.18 (Ubuntu)
    [SERVER_NAME] => 192.168.1.101
    [SERVER_ADDR] => 192.168.1.101
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 192.168.1.100
    [DOCUMENT_ROOT] => /var/www/html
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => /var/www/html
    [SERVER_ADMIN] => webmaster@localhost
    [SCRIPT_FILENAME] => /var/www/html/test.php
    [REMOTE_PORT] => 59725
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /test.php
    [SCRIPT_NAME] => /test.php
    [PHP_SELF] => /test.php
    [REQUEST_TIME_FLOAT] => 1555305025.511
    [REQUEST_TIME] => 1555305025
)

图片描述
图片描述

<?php
session_start();
function set_login_cookie($u,$t){

cookie("userid",$u["userid"],$t);//无效
cookie("username",$u["username"],$t);//无效
cookie("userck",$u["userck"],$t);//无效
cookie("aaaa","aaaa",$t);//有效

}

function cookie($n,$v,$t){

setcookie($n,$v,$t,"/");

}

$a=[];
$a["userid"]=1;
$a["username"]="a";
$a["userck"]="fasdf";

set_login_cookie($a,time()+6000);
?>

我把代码简列了出来,发现不使用变量的时候可以。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题