2016-04-06 3 views
0

Railsサーバへのリクエストごとに3つのレスポンスヘッダ(Rails Devise Authヘッダ:uid、クライアント、アクセストークン)を取得しようとしています。サーバから送られないカスタムレスポンスヘッダ(Rails Devise)

Postman(httpクライアント)を使用しています。 OkHttp(java httpクライアント)では、ヘッダーはクライアントに表示されません(私はWiresharkを使ってチェックしました)。私はそれだけで動作するデバッグモードにいるとき は...郵便配達と

+0

チャンク付きの予告編のヘッダーでチャンクエンコードのようなボディサウンドの後に送信されるヘッダー。これは非常にめったに使用されず、サポートされている機能なので、私はそれがこのように行われているのか疑問です。実際に送信されるデータ、つまりpostmanとOkHttpの両方のパケットキャプチャをcloudshark.orgに追加してください。 –

+0

あなたのおかげで、私はより多くの情報を準備します。 –

+0

郵便番号のパケット:https://www.cloudshark.org/captures/325740cea0ab –

答えて

1

追加ヘッダは、郵便配達が起源ヘッダを送信し、サーバはCORSヘッダ、すなわちAccess-Control-...で返信さに起因するものです。これらのヘッダーは、通常のHTTPヘッダー内で送信されます。つまり、応答後ではありません。

しかし、これらのアクセス制御ヘッダーは、クロスオリジンの動作がXHRであるため、ブラウザーからアクセスが行われた場合にのみ関連します。あなたがブラウザの中にいないので、あなたは何をしているのか無関係でなければなりません。関連するのは、応答の本文と他のヘッダーの一部です。ここでは違いはありません。また、同じTCP接続(郵便配達員によってHTTPキープアライブ)または複数の接続(OkHttp)で複数の要求が送信される場合、それぞれの要求は独立している必要があります。

本当にこれらの特別なヘッダーを取得したい場合は、OriginヘッダーをOkHttpリクエスト内に追加する必要があります。独自のヘッダーを追加する方法については、the OkHttp examplesを参照してください。しかし、私が言ったように、これらのアクセス制御ヘッダーは実際のタスクには無関係でなければならず、これらのヘッダーにアクセスする必要はありません。

+0

申し訳ありませんが、私はこれについての意図を説明していないことを認識しています。私はこれらのuid、クライアント、アクセストークンヘッダーを取得しようとしています。なぜなら、サーバーは常にクライアントとアクセストークンの値を更新し、すべての応答を返します。次に、すべてのフォローリクエスト、つまりsign_in> timeline page 1> timeline page 2(3つの別個のリクエスト)で認証するために、 "/ api/v1/patients /:id:timelines"レスポンスでヘッダーを取得します。 –

+0

@PatrickMachado:パケットキャプチャによれば、取得したいヘッダは、あなたのOkHttpリクエストで得た応答にあります。だからどこに問題があるの? –

+0

問題は、それらがsign_in要求内にあるだけなので、私はタイムライン要求にもそれを必要としています。 –

0

Railsプロジェクトのファイル "config/initializers/devise_token_auth.rb"に "config.batch_request_buffer_throttle"というプロパティがあります。 5秒から0秒に変更しました。 次の要求に対して、その時間内に現在のトークンを使用可能にすることは、プロパティです。 元のドキュメントとして:「APIに複数のリクエストを同時に行う必要がある場合があります。この場合、バッチ内の各リクエストは同じ認証トークンを共有する必要があります。それでも同じ認証トークンを使用しています。

私たちがPostmanまたはJava Debugを使用してリクエストを実行したとき、Deviseは新しいトークンを生成してからクライアントに取得できるように5秒間実行していました。

関連する問題