1

私は自分のtrigger.ioアプリでCORSを動作させようとしています:

.htaccessに次の設定があります

Header set Access-Control-Allow-Headers: "Accept,Origin,Content-Type,X-Requested-With"
Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE,OPTIONS"
Header set Access-Control-Allow-Credentials: "true"
Header set Access-Control-Allow-Origin "http://localhost:3000,content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c"

Web(localhost:3000)でトリガーアプリを実行すると正常に機能します。

しかし、それを(android)デバイスにデプロイすると、デバッグ出力に次のエラーが表示されます。

[ERROR] XMLHttpRequest cannot load {link}http://mydevtest.lan/api/auth/currentuser.{/link} Origin content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c is not allowed by Access-Control-Allow-Origin. -- From line 1 of null

Access-Control-Allow-Originヘッダーにcontent://を設定することは合法ではないのではないかと心配しています。

4

2 に答える 2

2

あなたが持っているAccess-Control-Allow-Originヘッダーは無効です。有効な値は、「*」またはスペースで区切られた原点のリストのいずれかです。次のいずれかが機能するはずです。

Header set Access-Control-Allow-Origin "*"

また

Header set Access-Control-Allow-Origin "http://localhost:3000 content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c"

私は後者の形式(複数の起源を持つ)をテストしたことがないことに注意してください。CORS仕様では許可されていますが、ブラウザはまだサポートしていない可能性があります。

もう1つできることは、Originヘッダーの値を読み込んでサーバーで検証することです(つまり、値が「http:// localhost:3000」または「content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c」と等しいことを手動で確認します)。 )、次にその値のみをAccess-Control-Allow-Origin応答ヘッダーにエコーします。ただし、サーバー側の条件付き処理が導入されるため、これにはもう少し作業が必要です。

于 2013-01-22T17:49:55.347 に答える
1

また、content://がCORSで許可されていないことを恐れています。設定Access-Control-Allow_originしてみてください*。それが機能する場合は、おそらく問題です。

より良い解決策は、XHRリクエストの実行を回避し、forge.request.ajaxを使用することです。これにより、ネイティブコードからリクエストが作成され、ドメイン間の制限が回避されます。そのためのドキュメントはここにありますhttp://docs.trigger.io/en/v1.4/modules/request.html#modules-request

于 2013-01-22T17:40:13.673 に答える