当应用程序写入document.cookie时如何保存cookie?

当应用程序写入document.cookie时如何保存cookie?

我想了解如何保存应用程序写入的cookie document.cookiehttps://developer.mozilla.org/en-US/docs/Web/API/Document/cookie),正如我注意到的,保存到文件的常用方法 wget/curl 似乎不适用于这种特殊情况。

假设 Web 应用程序写入 cookie:

document.cookie = name + "=" + value  + expires + "; path=/";

例如,

wget --keep-session-cookies --save-cookies cookies.txt "http://foobar/app-generates-cookie.html"

或卷曲,

curl --cookie-jar cookie.txt http://foobar/app-generates-cookie.html

wget/curl 都不适用于上述应用程序案例。

答案1

如果您使用 HTML 代码中的 JavaScript 将 cookie 保存在客户端,则该方法不起作用。 Wget 和curl 不解释任何JavaScript 代码,它们只是返回服务器发送的响应。

您需要在服务器端设置 cookie,例如设置cookie在 PHP 中。这样cookies就会在HTTP响应头中发送设置Cookie字段并可以通过 wget/curl 保存。

wget带有 cookie 的响应标头(使用-S/选项的输出--server-response)如下所示:

HTTP/1.1 200 OK
Date: Fri, 01 Nov 2019 00:33:05 GMT
Server: Apache/2.4.25 (Debian)
Set-Cookie: testcookie=myvalue; expires=Fri, 01-Nov-2019 01:33:05 GMT; Max-Age=3600
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

cookie 在 PHP 页面中设置,使用:

<?php setcookie("testcookie", "myvalue", time()+3600); ?>

相关内容