0

シンプルな CRUD アプリ用の AppGyver スイートで Angular を使用しています。GET および POST リクエストは、クラウドにデプロイするまで、リモート API (PHP REST サーバー) に対して正常に機能していました。そこから、PHP が実際に POST データを取得することはありません。

NGINX でカスタム ヘッダーを使用して CORS アクセスを開いています

サーバーで tcpdump を実行すると、クラウドにデプロイする前後に送信されるヘッダーにこれらの違いがあることがわかりました

IOS SIMULATOR::: WORKS----
Content-Length: 26
Accept: application/json, text/plain, */*
Content-Type: application/json


DEPLOY TO CLOUD::: DOESN'T------
Access-Control-Request-Method: POST
Accept: */*
Access-Control-Request-Headers: accept, origin, content-type
Content-Length: 0

私が見ることができないCORSの問題だと思います...非常にイライラします!

(ストレートHTTPの代わりに署名付きSSL証明書を使用してみましたが、変更はありません)

私のNGINXヘッダー:

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Key,accept,origin,content-type,X-Requested-With,steroidsAppId,steroidsApiKey,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

add_header "Access-Control-Request-Method" "POST";
add_header "Access-Control-Allow-Credentials" true;
4

2 に答える 2

0

私はこれを理解することができました。CORS を完全に理解できなかったのは私のせいです。

ただし、AppGyver の担当者は、アプリがローカルでテストされてクラウドに展開されるときに同じヘッダーが送信されると述べましたが、そうではないようです...

NGINX ログを見て、OPTIONS 動詞を使用した各リクエストの前に「プリフライト」チェックが実行されていることに気付きました。クラウドにデプロイされると、2 番目の要求は終了しました。この構成を使用してアクセスを開きました

https://michielkalkman.com/snippets/nginx-cors-open-configuration.html

于 2015-04-22T20:50:19.453 に答える
0

REST アプリケーションにライブ サーバーを使用していて、CORS の問題が発生している場合。Ionic のプロキシ サーバーを使用してすべてのリクエストを実行することをお勧めします。OPTIONリクエストなどでは実行されません。

これを確認して、「高度な配信オプション」までスクロールし、「サービス プロキシ」までスクロールします。

于 2015-04-23T05:05:17.857 に答える