我需要更新一个cookie。我在通过 ajax 调用的 php 文件中执行此操作。这是代码:
setcookie('items['.$_POST['id'].']');
Run Code Online (Sandbox Code Playgroud)
cookie 不会更新,事实上,如果我在 print_r($_COOKIE['items'])
setcookie 函数之后写入,我会发现它$_COOKIE['items']
与调用 setcookie 函数之前的内容相同。我能怎么做?
在过去的几个小时里,我一直在尝试自学有关 cookie 的知识,以及如何将几个表单字段中的值存储到 cookie 中。
我运气不太好,我发现的所有例子都没有太大帮助。我应该使用 PHP 还是 JS 生成它们?任何反馈或正确方向的推动将不胜感激!
提前致谢!
我正在本地测试应用程序,并向http://localhost:3000/api/auth/login发出授权请求。响应中将返回 set-cookie 标头以及 JWT 身份验证令牌。JWT 看起来像:
JWT-TOKEN=[really long alphanumeric string];Version=1;Comment=;Domain=;Path=/;Max-Age=3600;;HttpOnly
Run Code Online (Sandbox Code Playgroud)
之后,我向http://localhost:3000/api/other/resource发出另一个请求,但收到未经授权的错误,因为它期望请求中包含带有 JWT 令牌的 cookie。
Cookie 在 Firefox、Safari 和 Chrome 中设置,但在 Edge 中未设置。Edge 开发工具控制台中没有任何错误。知道为什么 Edge 中没有设置 cookie 吗?
我正在设置 2 个 cookie 以响应从后端到浏览器的情况。一种是安全的HTTPOnly(它是refreshToken),另一种没有这些参数,因此JavaScript可以访问它(携带有关refreshToken设置和过期时间的信息)。
Cookie 响应:
这两个都没有在浏览器中设置。我研究了所有关于cookie的知识,老实说,我在这里迷路了,需要你的帮助。
起初,它在我的本地主机环境中运行得很好(后端在本地主机:8080,前端在本地主机:3000)。然后我进行了部署,但它不起作用。我在本地主机上再次测试,并检查了“禁用缓存”以防止不必要的行为,但即使在那里它也不起作用。
我会提到我正在使用 CORS,不确定这是否会干扰:
我在 Chrome 和 Firefox 中对此进行了测试。
如何在文档中间设置cookie,而不会产生"已发送标题"错误?我要做的是制作一个注销脚本(登录cookie设置工作......很奇怪.是因为它包含在if语句中吗?)但是我已经回应了页面标题和其他一些东西在我进行此注销之前,在页面顶部.
谢谢!
出于某种原因,我无法在MainHandler之外实例化set_cookie ..这是一个小代码来显示我想要做什么..任何人都可以帮忙吗?
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
from GenCookie import *
class MainHandler(tornado.web.RequestHandler):
def get(self):
g=GenCookie()
response = g.genCookie()
class GenCookie:
def genCookie(self):
print self.request.remote_ip
print self.cookies
print self.request.headers
expires = datetime.datetime.utcnow() + datetime.timedelta(days=365)
if ("uid" in cookies):
self.set_cookie("uid", value=cookies["uid"],expires=expires)
else:
self.set_cookie("uid", value='dfc278623ab44df2bd501e106e81d146',expires=expires)
return
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我发现有时浏览器无法从我的网站上获取cookie,所以我curl
用来检查标题,信息是:
C:\Documents and Settings\jack>curl http://localhost -I
HTTP/1.1 200 OK
Expires: Thu, 01-Jan-1970 00:00:00 GMT
Set-Cookie: SCALAEYE_SESSION="a57cf8ebdfc379da91ad17d1d1eac706c25ae4c3-%3Citems%3E%3C%2Fitems%3E";Path=/
Set-Cookie: SCALAEYE_FLASH="%3Citems%3E%3C%2Fitems%3E";Path=/
Content-Length: 121665
Server: Jetty(6.1.26)
Run Code Online (Sandbox Code Playgroud)
但是当我使用浏览器IE6
并Firefox
访问时,标题是:
Response Headersview source
Date Fri, 08 Apr 2011 08:48:09 GMT
Transfer-Encoding chunked
Server Jetty(6.1.26)
Run Code Online (Sandbox Code Playgroud)
你可以看到没有Set-Cookie
标题,这会产生问题.我的服务器是Jetty 6.1.26
.为什么他们的回答不同?哪里错了?以及如何解决它?
我有一个基本的登录系统.基本的登录/注销功能如下:
function login() {
global $page;
if ($_COOKIE['adminUser'] == adminUser && $_COOKIE['adminPass'] == adminPass):
$_SESSION['adminLogin'] = true;
redirect($_SERVER['REQUEST_URI']);
elseif ($_POST['adminUser'] == adminUser && $_POST['adminPass'] == adminPass):
setcookie('adminUser', $_POST['adminUser'], time() + 60 * 60 * 24 * 7);
setcookie('adminPass', $_POST['adminPass'], time() + 60 * 60 * 24 * 7);
$_SESSION['adminLogin'] = true;
redirect($_SERVER['REQUEST_URI']);
else:
$page->content->table = new template('admin/login.tpl');
// it shows the login form
endif;
}
function logout() {
$_SESSION['adminLogin'] = false;
setcookie('adminUser', false, time() - 60*100000);
setcookie('adminPass', false, time() - …
Run Code Online (Sandbox Code Playgroud) 我正在编写自己的cookie作为我使用NodeJS制作的网络服务器的一部分(即不使用任何软件包).我已经能够做到这一点,使用类似的东西:
response.writeHead(200, {
'Set-Cookie':'sesh=wakadoo'
});
Run Code Online (Sandbox Code Playgroud)
但是,我想让我的饼干比现在更持久(也就是说完全没有).我尝试过这样的事情:
var curdate = new Date();
response.writeHead(200, {
'Set-Cookie':'sesh=wakadoo; expires='+curdate.toUTCString()
});
Run Code Online (Sandbox Code Playgroud)
但唉,这似乎不起作用.chrome只是忽略了我设置的过期,而firefox从不加载页面.我目前的目标是简单地给我的cookie一个可以由浏览器解释的过期日期...有人知道怎么做吗?
最好,
萨米
你好,我正试图抓住一个问题疯狂.
我无法删除将在index.php上设置的cookie,如下所示:
$a = 'text';
setcookie('name_of_cookie', $a, time()+60*60*24*365);
Run Code Online (Sandbox Code Playgroud)
在page-php上,我可以调用该cookie,内容就像$ a.我试图在page.php上删除那种不同的方式:
setcookie('name_of_cookie', FALSE, time()-3600);
Run Code Online (Sandbox Code Playgroud)
我还找到了一个版本,我只将它设置为:
setcookie('name_of_cookie');
Run Code Online (Sandbox Code Playgroud)
我将在浏览器的设置中设置另一个具有相同名称的cookie.新cookie没有内容 - 当然,没有声明内容.
我也试图在过去设置更高的时间,因为服务器位置,但这也不起作用.甚至试图将时间设置为1
不起作用.
我几次检查了名称的拼写,没有来自不同名称的失败.
如果有人能说出我做错了什么,我会很高兴的吗?
谢谢.