2016-05-09 7 views
0

私はAPIドキュメントを構築するためにswaggerを使用しています。私はそれが初めてです。私がやっているのは、まずログインしてリストAPIを呼び出すことです。しかし、セッションでは、クッキーは維持されず、リスト呼び出しは実行されません。最初にアプリケーションにログインして、リストに電話をかける必要があります。私はちょうど私の知る限り闊歩エディタがあることを意味し、xhr.withCredentials = trueでAPI呼び出しをすることはありません言うことができるように、この同じ質問に苦しんでいくつかの時間を過ごし、どのように闊歩エディタでそれを行うことができますhttp://editor.swagger.io/#/スワッガーエディタでセッションを維持する方法

ありがとう

答えて

2

サーバーのCORSポリシーで許可されていても、ブラウザはCookieを送信しません。スワッガーエディタを更新する方法についていくつかの議論がありましたが(例:https://github.com/swagger-api/swagger-js/issues/251)、まだこれが完了していないようです。

あなたの最良の選択肢は、おそらく自分のドメイン上でSwagger Editorをホストすることによって、起点のセキュリティの問題全体を避けることです。これは提案の1つです:https://github.com/swagger-api/swagger-editor/blob/master/docs/cors.md#host-swagger-editor-in-your-own-domain。まるでそれがあなたの開発サイトのあなた自身のアプリケーションの1つであるかのようにそれを実行してください。

もう1つの方法は、Chromeウェブセキュリティを無効にすることです:https://github.com/swagger-api/swagger-editor/blob/master/docs/cors.md#run-swagger-editor-in-a-browser-that-ignores-http-access-control。私はこれを試していないが、Swagger Editorが依然としてXHRリクエストを適切に設定していないので動作しない可能性があります。

最後に、ドッカーに精通している場合は、Swagger Editorドッカーインスタンスを実行してすべてをリンクすることができます。これは複雑ですが、私はすることによって、これを達成:

nginxのリバースプロキシサーバーを実行している同一ネットワーク( https://hub.docker.com/r/swaggerapi/swagger-editor/
  • 上の別のドッキングウィンドウコンテナ内闊歩エディタのインスタンスを実行しているドッキングウィンドウコンテナ
  • の内側に私たちのバックエンドを実行している
    • 例えばhttp://localhost/dev/swagger-editor/へのリクエストがswaggerドッカーコンテナにプロキシ転送され、http://localhost/api/へのリクエストがバックエンドにプロキシ転送されるように、第3のドッキングコンテナ内に配置される。この方法ではブラウザは要求をlocalhostにしか見ることができず、すべて正常に機能します。

    しかし、これでうまくいくと期待する前に、ドッカーとnginxのリバースプロキシ設定に入る必要があります。さもなければ、これは別のウサギの穴かもしれません。がんばろう!

  • +0

    お返事ありがとうございます。私はChromeのセキュリティを無効にし、私のために働いています。だから私は他の方法が必要な場合は、次のオプションを試してみることができます。 – User3091

    関連する問題