[ { "id": "c362b989.954ae8", "type": "http in", "z": "d41b4dd3.ecd6a", "name": "", "url": "/hello-cookie", "method": "get", "swaggerDoc": "", "x": 250, "y": 2200, "wires": [ [ "21ddf71f.d00518" ] ] }, { "id": "21ddf71f.d00518", "type": "function", "z": "d41b4dd3.ecd6a", "name": "Format cookies", "func": "msg.payload = JSON.stringify(msg.req.cookies,null,4);\nreturn msg;", "outputs": 1, "noerr": 0, "x": 460, "y": 2200, "wires": [ [ "f3aa98c1.befc18" ] ] }, { "id": "f3aa98c1.befc18", "type": "template", "z": "d41b4dd3.ecd6a", "name": "page", "field": "payload", "fieldType": "msg", "format": "html", "syntax": "mustache", "template": "\n \n \n

Cookies

\n Add a cookie
\n Clear cookies
\n
{{ payload }}
\n \n", "output": "str", "x": 650, "y": 2200, "wires": [ [ "f52e2880.180968" ] ] }, { "id": "f52e2880.180968", "type": "http response", "z": "d41b4dd3.ecd6a", "name": "", "x": 870, "y": 2200, "wires": [] }, { "id": "9a2a9a4.0fc0768", "type": "change", "z": "d41b4dd3.ecd6a", "name": "Redirect to /hello-cookie", "rules": [ { "t": "set", "p": "statusCode", "pt": "msg", "to": "302", "tot": "num" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.location", "pt": "msg", "to": "/hello-cookie", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 670, "y": 2260, "wires": [ [ "f52e2880.180968" ] ] }, { "id": "afefb90.53dcf48", "type": "function", "z": "d41b4dd3.ecd6a", "name": "Add a cookie", "func": "msg.cookies = { };\nmsg.cookies[\"demo-\"+(Math.floor(Math.random()*1000))] = Date.now();\nreturn msg;", "outputs": 1, "noerr": 0, "x": 450, "y": 2240, "wires": [ [ "9a2a9a4.0fc0768" ] ] }, { "id": "d5205a2c.db9018", "type": "function", "z": "d41b4dd3.ecd6a", "name": "Clear cookies", "func": "// Find demo cookies and clear them\nvar cookieNames = Object.keys(msg.req.cookies).filter(function(cookieName) { return /^demo-/.test(cookieName);});\nmsg.cookies = {};\n\ncookieNames.forEach(function(cookieName) {\n msg.cookies[cookieName] = null;\n});\n\nreturn msg;", "outputs": 1, "noerr": 0, "x": 460, "y": 2280, "wires": [ [ "9a2a9a4.0fc0768" ] ] }, { "id": "fda60c66.04975", "type": "http in", "z": "d41b4dd3.ecd6a", "name": "", "url": "/hello-cookie/add", "method": "get", "swaggerDoc": "", "x": 260, "y": 2240, "wires": [ [ "afefb90.53dcf48" ] ] }, { "id": "35285a76.1f8636", "type": "http in", "z": "d41b4dd3.ecd6a", "name": "", "url": "/hello-cookie/clear", "method": "get", "swaggerDoc": "", "x": 260, "y": 2280, "wires": [ [ "d5205a2c.db9018" ] ] }, { "id": "cb094c2f.7e34d", "type": "comment", "z": "d41b4dd3.ecd6a", "name": "Working with cookies", "info": "The messages sent by the `HTTP In` node include the `msg.req.cookies` property that lists the cookies set on the current request.\n\nThe `HTTP Response` node will use the `msg.cookies` property in order to set or clear cookies.\n\nSee Node-RED cookbook [item](https://cookbook.nodered.org/http/work-with-cookies) for details.\n", "x": 220, "y": 2100, "wires": [] }, { "id": "287a9146.683afe", "type": "comment", "z": "d41b4dd3.ecd6a", "name": "Create HTTP page for testing cookies: open http://localhost:1880/hello-cookie from Web browser. ", "info": "", "x": 500, "y": 2160, "wires": [] } ]