2016-01-15 14 views
7

मुझे नोडजेज़ एप्लिकेशन मिला है जो उपयोगकर्ता के अनुरोधों को संभालता है और कुकीज़ प्राप्त करता है जिसे मैं आंतरिक API सेवा में प्रॉक्सी करना चाहता हूं। नोड-फ़ेच का उपयोग करके इसका कैसे संपर्क करें?नोड-फ़ेच के साथ कुकीज़ कैसे भेजें?

कृपया अति उत्साहजनक पेशकश न करें।

उत्तर

10

आप अपने अनुरोध के शीर्षक में यह सेट करके कुकी के साथ पारित करने में सक्षम होना चाहिए:,

const opts = { 
    headers: { 
     cookie: 'accessToken=1234abc; userId=1234' 
    } 
}; 
const result = await fetch(`/some/url`, opts); 
-3

आपको नोड-फेच की आवश्यकता नहीं है, आप उपयोगकर्ता कुकी को अनुरोध शीर्षलेख "कुकी" से पढ़ सकते हैं। देखें https://nodejs.org/dist/latest-v5.x/docs/api/http.html#http_message_headers

लेकिन यदि आप क्रॉस-डोमेन अनुरोध का उपयोग करते हैं, तो आपको अपने क्लाइंट अनुरोध को प्रमाण-पत्र के साथ कॉन्फ़िगर करना होगा और सर्वर पर सीओआरएस-हेडर जोड़ना होगा। देखें: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

+0

आपने जो कुछ हासिल करने का प्रयास किया है उसे गलत समझा है। यह सर्वर के क्लाइंट के बारे में नहीं है, यह सर्वर-टू-सर्वर के बारे में है। मेरे पास नोडजेस एप्लिकेशन में आने वाला अनुरोध है। हां, मुझे कुकीज़ पढ़ने के लिए नोड-फ़ेच की आवश्यकता नहीं है क्योंकि मेरे पास पहले से ही अनुरोध ऑब्जेक्ट से है। मुझे इन कुकीज़ को बाहरी एपीआई के दूसरे अनुरोध के साथ पास करने की आवश्यकता है। क्या इन कुकीज़ को किसी भी तरह नोड-फ़ेच के साथ प्रॉक्सी करना संभव है या नहीं? – Skay

+0

यहां superagent के साथ एक उदाहरण है - https://github.com/erikras/react-redux-universal-hot-example/blob/master/src/helpers/ApiClient.js#L33 - क्या ऐसा करना संभव है नोड लाने? – Skay

-1

सरल के लिए आप एक मध्यस्थ जो global.fetch करने के लिए कुकीज़ शामिल होंगे लिख सकते हैं , नीचे की तरह।

const realFetch = fetch; 

function cookieFetch(fetch, cookie) { 
    return (url, opts) => { 
    opts = opts || {}; 
    return fetch(url, Object.assign(opts, { 
     headers: Object.assign(opts.headers || {}, { cookie }) 
    })); 
    }; 
} 

function middleware(req, res, next) { 
    const kuki = req.headers.cookie; 
    global.fetch = kuki ? 
    cookieFetch(realFetch, kuki) : 
    realFetch; 
    next(); 
} 

module.exports = middleware; 
संबंधित मुद्दे