En el lado Html
<script src="http://localhost:3002/widget-load?clientId=1" type="text/javascript"> Y en los nodejs
app.get('/widget-load', function (req, res) { const { clientId } = req.query; // Try 1 res.cookie("clientId", clientId, { // httpOnly: true }); // Try 2 res.setHeader('Set-Cookie', `clientId=${clientId};`); res.sendFile(__dirname + '/public/static/js/widget-load.js'); });Pero esto no está funcionando. Incluso lo intenté
app.use(function (req, res, next) { res.header('Access-Control-Allow-Credentials', true); res.header('Access-Control-Allow-Origin', req.headers.origin); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); next(); }); incluso yo estoy usando cookie-parser
var cookieParser = require('cookie-parser'); app.use(cookieParser());pero todavía esto no está funcionando. No se establece ninguna cookie en el navegador
Con una combinación de la respuesta en mi enlace y sus requisitos, está funcionando aquí, la cookie está configurada en clientId=1 . Para los recursos de sitios cruzados, debe configurar las opciones en sameSite: 'none' y secure: 'false' si no está ejecutando ssl .
const cookieParser = require('cookie-parser'); const express = require('express') const app = express() app.use(cookieParser()); app.get('/widget-load', function (req, res) { const { clientId } = req.query; var cookie = req.cookies.clientId; if (cookie === undefined) { res.cookie('clientId',clientId, {httpOnly: true, sameSite: 'none', secure: 'false' }); console.log('cookie created successfully'); } else { // yes, cookie was already present console.log('cookie exists', cookie); } // // Try 1 // res.cookie("clientId", clientId, { // // httpOnly: true // }); // // Try 2 // res.setHeader('Set-Cookie', `clientId=${clientId};`); res.sendFile('widget-load.js',{'root':'public'}); }); app.listen(3002, () => { console.log(`Example app listening on port 3000`) })