web-dev-qa-db-ja.com

スーパーエージェントでCookieを使用するにはどうすればよいですか?

私はこのようなものでエクスプレスでCookieセッション管理を行っています:

req.session.authentication = auth;

そして、私は認証されたURLを次のようなもので検証します

if(!req.session.authentication){res.send(401);}

現在、mocha、 superagent および should を使用してURLのテストを構築していますが、superagentでCookieを取得/設定する方法を見つけることができないようです。認証済みテストの前にログインを要求しようとしましたが、機能していません。

Mocha BDDスイートのbeforeステートメントでログインにリクエストを追加しようとしましたが、リクエストは不正であるとまだ言われています。ブラウザからリクエストを行う認証をテストしましたが、何かアイデアがありますか?

33
Kuryaki

(プレーンな古いsuperagentの代わりに)superagent.agent()を使用して、リクエストに永続的なCookieを持たせます。 スーパーエージェントドキュメントのCookieの保存 またはコード例: agency.jscontroller.test.js を参照してください。

29
Gaurav

次のコードは正常に動作するようです。

req.set( 'Cookie'、 "cookieName1 = cookieValue1; cookieName2 = cookieValue2");

16
Teoman shipahi

CORSリクエストのCookieの送信に問題がある場合は、.withCredentials()メソッドを使用します ここで説明

request
  .get('http://localhost:4001/')
  .withCredentials()
  .end(function(err, res) { })
8

あなたが言及したので、両方を取得する必要がありますおよび Cookieを設定します:

取得する:

const request = await Superagent.get('...')

const cookie = request.header['set-cookie']

セットする:

Superagent.post('...').set('Cookie', 'cookie_info')
2
BAR