4

angularjs コードバ アプリを作成しています。ログインするには、別のドメインに対して最初のリクエストを実行する必要があり、応答には、ログインするために設定する必要がある Cookie を含む/loginというエントリが含まれます。cookie

問題は、私がionic serve(私のブラウザで) 開発しているとき、CORS と呼ばれるひどいものがあることです。また、接続したい他のサイトでは CORS が許可されていないためnode-http-proxy、リクエストをプロキシして CORS ヘッダーを追加する を使用してプロキシを使用することを余儀なくされました。次に、他の Web サイトに接続する必要があるときに、プロキシで要求を行いました。ただし、前に説明したようにログインする必要があります。

したがって、このコードをプロキシに配置して、/loginルートの応答を解析し、Cookie を単純に抽出します。

connect.createServer(
  function(req, res, next) {
    res.oldWrite = res.write;
    var body = ""
    res.write = function(data) {
      body = data.toString('UTF8')
      cookie = (/<cookie><!\[CDATA\[wenvjgol=(.+)\]\]><\/cookie>/g.exec(
        body) || ["", undefined])[1]
      if (cookie) console.log('found cookie: ' + cookie)
      res.oldWrite(data);
    }
    ...
    if (cookie) {
      res.setHeader('Set-Cookie', 'wenvjgol=' + cookie +
        '; Domain=otherwebsite.com; Path=/; Expires=' + new Date(Date.now() +
          1000 * 3600 * 24).toUTCString())
    }
    next();
  },
  function(req, res) {
    if (req.method === "OPTIONS") {
      res.end();
      return;
    }
    proxy.web(req, res);
  }
).listen(8101);

今私が到達したとき、私/loginは見る
cookie found: 1gmriba47wlc4ow4k88k8o8044gskso8sc4s0c8k40gcs44g8og40c8sks00so8og

何らかの理由で、最初のリクエストでは Cookie が設定されません。そのため、他のサーバーのどこかで最初のリクエストを行います (常にプロキシ経由)。

応答ヘッダーには

Set-Cookie: wenvjgol=1gmriba47wlc4ow4k88k8o8044gskso8sc4s0c8k40gcs44g8og40c8sks00so8og; Domain=anotherdomain.com; Path=/; Expires=Tue, 21 Oct 2014 11:23:55 GMT

そしてクロムはそれを検出します。しかし、URLへのリクエストを行いたい場合、ログインする必要があり、リクエストでもレスポンスでもなく、Cookieはありません:(

これは、私が角度でそれを行う方法です:

$auth.login($event).then (sid) ->
  console.log 'sid is', sid

  $http(
    method: "GET"
    url: "#{config.domain}/forums"
    withCredentials: true
    # headers:
      # "Cookie": "wenvjgol=#{sid}"
  )
.then ->
  $http(
    method: "GET"
    url: "#{config.domain}/forums/5-#{$routeParams.id}-#{$routeParams.topic}-1-0-1-0-0.xml"
    withCredentials: true
    # headers:
      # "Cookie": "wenvjgol=#{sid}"
  )
.then console.log

完全なプロキシ ファイルはこちら: https://gist.github.com/vinz243/fd01b77ef309101976a5

私がはっきりしていたことを願っています。

4

0 に答える 0