2013-08-27 73 views
9

Tôi đã xem cách thực hiện yêu cầu với một cookie và tôi đã thấy cách viết phản hồi với nhiều cookie nhưng không ai biết cách viết yêu cầu trong node.js sử dụng mô-đun http (nếu có thể) với nhiều tiêu đề 'Cookie'?Nhiều tiêu đề 'Cookie' trong yêu cầu node.js

Cho đến nay, cách duy nhất tôi thấy để thực hiện yêu cầu trong node.js liên quan đến việc truyền một đối tượng làm tham số cho hàm, yêu cầu phải có hai khóa giống nhau.

headers = { 
    Cookie: firstCookie, 
    Cookie: secondCookie 
} 

vì vậy sẽ không hoạt động.

Đây là một câu hỏi node.js, nhưng tôi không vô cùng tự tin với http, vì vậy tôi không chắc chắn nếu không có cách nào để đặt hai cookie riêng biệt trong tiêu đề. Có thể kết nối hai thành một tiêu đề duy nhất không? Yêu cầu có hai cookie được xác định riêng biệt có khác nhau không với một tiêu đề chứa cả hai?

+0

Đó api là để viết các tiêu đề phản ứng không yêu cầu tiêu đề – twinlakes

Trả lời

11

Thuộc tính 'Cookie' bạn đã thêm là tiêu đề trực tiếp trong yêu cầu HTTP của bạn. Bạn chỉ nên sử dụng một tiêu đề 'Cookie' và mã hóa các tập tin cookie của bạn đúng cách để một chuỗi tiêu đề cookie hợp lệ, như thế:

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

Ngoài ra, thay vì sử dụng nodeJS client HTTP mẹ đẻ mà thường sẽ làm cho bạn viết rất nhiều boilerplate mã, tôi sẽ khuyên bạn nên sử dụng một thư viện nhiều đơn giản như Requestify ..

Đây là cách bạn có thể làm cho một yêu cầu HTTP với cookie sử dụng 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

Yêu cầu âm thanh như những gì tôi đang tìm kiếm, nhưng các dự án của tôi đã được viết bằng http vì vậy tôi đã sử dụng câu trả lời đầu tiên của bạn thay thế. Cảm ơn – twinlakes

+0

Vui vì tôi có thể giúp (-: – ranm8

-3

Thay vì sử dụng thư viện Node.js gốc, bạn có thể sử dụng child_process.exec để chạy quy trình curl và lấy lại giá trị để thực hiện bất kỳ loại yêu cầu nào.

+5

Woah. Ý tưởng khủng khiếp, bởi vì nó quy mô nặng. –

Các vấn đề liên quan