1

仕事

Bluemix でホストされている Kitura サーバーで CORS を有効にします。

開発マシン
OS X 10.12.1、Swift バージョン 3.0.2。


Ubuntu 14.04、Swift 3.0.1 にデプロイされました。

コード

IBM のミドルウェアを使用してKitura-CORSCORS を有効にしています。

.Package(url: "https://github.com/IBM-Swift/Kitura-CORS", majorVersion: 1, minor: 4)

アプリを構成した方法は次のとおりです。

let options = Options(allowedOrigin: .all, credentials: true, exposedHeaders: ["X-Access-Token"])
let cors = CORS(options: options)
self.router.all(middleware: cors)

所見

  1. Postman からのOPTIONSリクエストhttps://adeptness.eu-gb.mybluemix.netは、次のヘッダーを返します。

    • 接続→キープアライブ
    • コンテンツタイプ → text/html
    • 日付 → 2016年12月21日(水) 19:12:04 GMT
    • Transfer-Encoding → チャンク
    • X-Backside-Transport → OK OK
    • X-Global-Transaction-ID → 4203875359
  2. アプリは、リクエストに対するCORS のテストでテストに合格し、次の公開された応答ヘッダーを報告します。GEThttps://adeptness.eu-gb.mybluemix.net

    • コンテンツタイプ → text/html

問題

CORSが正しくセットアップされているかどうかは完全にはわかりません。調査結果 1 の応答にX-Access-Tokenヘッダーがないのはなぜですか?OPTIONS

私は CORS に関する Mozilla のドキュメントを読みましたが、サーバーによって明示的に許可されていない限り、ブラウザがプリフライト リクエストを実行し、すべての CORS リクエストをブロックすることは理解しています。私が見つけられなかったのは、「テスト」フロントエンドをモックアップすることなく CORS サーバー側をテストする方法に関するリソースでした。

CORS をテストするにはどうすればよいですか?

4

1 に答える 1

2

あなたが言ったように、一般的に、CORS はどのクロス オリジン リクエストが許可されているかをブラウザーに伝えることであり、開発者は XHR リクエストを HTML ページが読み込まれたサーバーと同じサーバーに制限していた古い JavaScript サンドボックスから抜け出すことができます。

すべてのクロス オリジン リクエストが許可されるわけではありません。Kitura-CORS パッケージを使用すると、サーバー開発者は、許可されているリクエストの種類に関する情報をブラウザーに提供できます。繰り返しますが、これはサーバーに送信されるリクエストに関するものであり、応答に関するものではありません。

exposedHeaders パラメーターを使用すると、サーバー開発者は、サーバーに送信される要求で使用できる HTTP ヘッダーを制御できます。

テストするには、2 番目のサーバーに XHR 要求を行う JavaScript を含む単純な Web ページを一方からロードするサーバーのペアが必要です。2 つのサーバーは異なるドメインにある必要があります (つまり、1 つはローカルのラップトップに、もう 1 つは Bluemix に)。2 番目のサーバーが、要求と共に受信したヘッダーを応答で渡す場合、何が渡されたかを確認できます。

于 2017-01-10T13:33:16.607 に答える