![当应用程序写入document.cookie时如何保存cookie?](https://linux22.com/image/163203/%E5%BD%93%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%86%99%E5%85%A5document.cookie%E6%97%B6%E5%A6%82%E4%BD%95%E4%BF%9D%E5%AD%98cookie%EF%BC%9F.png)
我想了解如何保存应用程序写入的cookie document.cookie
(https://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); ?>