2013-08-27 9 views
9

Ho visto come effettuare una richiesta con un singolo cookie, e ho visto come scrivere una risposta con più cookie, ma qualcuno sa come scrivere un richiesta in node.js utilizzando il modulo http (se possibile) con più intestazioni 'Cookie'?Più intestazioni "Cookie" in una richiesta node.js

Finora l'unico modo in cui ho visto di effettuare una richiesta in node.js riguarda il passaggio di un oggetto come parametro a una funzione, che richiede l'utilizzo di due chiavi identiche.

headers = { 
    Cookie: firstCookie, 
    Cookie: secondCookie 
} 

quindi non funzionerebbe.

Questa è una domanda node.js, ma non sono estremamente sicuro di http, quindi non sono sicuro che non ci sia un modo per impostare due cookie distinti nell'intestazione. È possibile concatenare i due in una singola intestazione? Una richiesta con due cookie definiti separatamente può variare da uno a un singolo header che contiene entrambi?

+0

tale API è per la scrittura di intestazioni di risposta non intestazioni di richiesta – twinlakes

risposta

11

La proprietà "Cookie" che hai aggiunto è un'intestazione diretta nella tua richiesta HTTP. Si dovrebbe usare solo un colpo di testa 'Cookie' e codificare i cookie correttamente ad una valida stringa di intestazione di cookie, come quella:

var headers = { 
    Cookie: 'key1=value1; key2=value2' 
} 

Inoltre, invece di utilizzare nodeJS client HTTP nativo che di solito vi farà scrivere un sacco di testo standard codice, io mi consiglia di utilizzare una libreria molto semplificata come Requestify ..

Questo è come si può fare una richiesta HTTP con i biscotti utilizzando requestify:

var requestify = require('requestify'); 

requestify.get('http://example.com/api/resource', { 
    cookies: { 
     'key1': 'val1', 
     'key2': 'val2',  
    } 
}) 
    .then(function(response) { 
     // Get the response body (JSON parsed or jQuery object for XMLs) 
     response.getBody(); 
    } 
); 
+0

Requestify suona come quello che sto cercando, ma i miei progetti già scritti con http quindi ho usato la tua prima risposta. Grazie – twinlakes

+0

Contento di aver potuto aiutare (-: – ranm8

-3

Invece di utilizzare la libreria Node.js nativa, è possibile utilizzare child_process.exec per eseguire un processo di arricciatura e ottenere lo stdout in cambio per eseguire qualsiasi tipo di richiesta.

+5

Woah. Un'idea terribile, perché scala male. –

Problemi correlati