web-dev-qa-db-ja.com

サービスエンドポイントでCORSを有効にするにはどうすればよいですか?

私はDrupalサービスエンドポイントをサービスモジュールで公開し、ionic Cordovaに基づいて構築されています)を使用して呼び出しました。「ionic serve」を実行したので、ファイルシステムから提供されていませんでしたが、実際のlocalhostとポートURLがありました。次にCORSモジュールをインストールしましたが、何を含める必要があるのか​​少し混乱しています。エンドポイントは http:// example。 com/api/v1 / これはRESTベースのサーバーであり、JSONのみを有効にしました。
Android-ハイブリッドアプリ(HTML/JSでコード化され、ionicでパッケージ化されていることを意味します)など)などのモバイルアプリに読み込むデータをサイトから取得したい。

ドキュメントは私を少し混乱させます。読む

「CORSを有効にするパスと対応するドメインのリスト。複数のエントリはカンマで区切る必要があります。パイプで区切られた1行あたり1つの値を次の順序で入力してください:」

内部パス

Access-Control-Allow-Origin。 Originヘッダーをエコーバックするために使用します。

アクセス制御許可メソッド

アクセス制御許可ヘッダー

Access-Control-Allow-Credentials

例:

* | http://example.com

api | http://example.com:808http://example.com

api/* | <ミラー>、 https://example.com

api/* | <mirror> | POST | Content-Type、Authorization | true

Access-Control-Allow-Origin|api/*|http://example.comを含めますか、それともドメインはサービスを呼び出すことができるドメインを表すものですか?

多分私は内部パスだけが必要で他には何も必要ありません。いずれの例もAccess-Control-All-*を使用していません。現時点では、GETリクエスト以外のことは行う予定はありません。

3
Bruce Whealton

私のubuntuサーバーでヘッダーを有効にする必要がありました:Sudo a2enmod headers

また、私が使用したCORS設定:*|http://myappURL-that-gets-data-from-drupal

2
knice

エンドポイントが「your.Host/api/v1/」の場合、この最小限のCORSモジュール構成が匿名のGETリクエストで機能するはずです。

api/v1/*|<mirror>
2
Kirill Shabunov

エンドポイントが承認ヘッダーを持つリクエストを処理できるように、残りのリクエストを認証するために使用されるoauth2サーバーを提供する oauth2 server を使用することをお勧めします。

アクセストークンを取得するために使用されるキーを使用してアプリ(モバイルアプリ/ Angularクライアント)をサポートするクライアント資格情報を実装し、他のアプリがこれらのキーを持っていることを除いてエンドポイントから情報を取得しないようにします。

そうすることで、リクエストのソースを認証するので、他のモジュールは必要ありません。

1
Mohammed Gomma