2016-01-15 13 views
7

私は、ユーザーの要求を処理し、内部APIサービスに代理したいcookieを受け取るnodejsアプリケーションを持っています。ノードフェッチを使用してこれにアプローチする方法は?ノードフェッチでクッキーを送信するには?

スーパーエージェントを提供しないでください。

答えて

10

あなたのリクエストのヘッダにそれを設定することにより、クッキーに沿って通過することができる必要があります:あなたはglobal.fetchにクッキーが含まれるミドルウェアを書くことができ、簡単なために

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

node-featchは必要ありません。リクエストヘッダー "Cookie"からユーザーのCookieを読み取ることができます。 https://nodejs.org/dist/latest-v5.x/docs/api/http.html#http_message_headers

ただし、クロスドメイン要求を使用する場合は、クライアント要求にwithCredentialを設定し、サーバーにCORSヘッダーを追加する必要があります。これを参照してください:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

+0

私は達成しようとしていることを誤解しています。それはサーバーからサーバーへのクライアントではなく、サーバー間のサーバーに関するものです。私はnodejsアプリケーションで着信要求を持っています。はい、私は既に要求オブジェクトからそれを持っているので、私はクッキーを読むためにノードフェッチを必要としません。私が必要とするのは、外部APIへの別のリクエストとともにこれらのCookieを渡すことです。何らかの形でノードをフェッチしてこれらのクッキーを代理することは可能ですか? – Skay

+0

ここにsuperagentの例があります - https://github.com/erikras/react-redux-universal-hot-example/blob/master/src/helpers/ApiClient.js#L33 - 同じことを可能にするかどうかノードをフェッチする? – Skay

-1

、以下のように。

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; 
関連する問題