外部 URL からデータを要求する phonegap アプリがあります。そのデータの一部は承認によって保護されています。asp.net webapi プロジェクトに asp.net フォーム認証を実装しました。私は承認メソッドといくつかのデータ メソッドを持っていますが、一部は承認が必要です。
認証方法
[HttpPost]
[ActionName("authenticate")]
public HttpResponseMessage Authenticate(LoginCredentials credentials)
認証が必要なアクション
[HttpGet]
[Authorize]
public List<MediaItem> GetAllCatalogs() {
すべてをローカル/テスト環境で実行すると、すべてうまく機能します。webapi をデプロイしてローカルホストからアクセスすると、クロス ドメイン違反が原因で中断します。認証を必要としない呼び出しでさえ。私の最初の解決策は、jsonp を実装することでした。これは、認証を必要としない呼び出しに最適でした。xhrFieldsにwithCredentialsを追加する必要があることがわかりましたが、jsonpではヘッダーが送信されないことがわかりました。これは、単純なajaxリクエストではなく、ヘッダーを含まないスクリプトロードであるためです。Authenticate メソッドから返された Cookie は、GetAllCatalogs の呼び出しと共に渡されませんでした。
CORSが助けになりますか?* (EVERYBODY - yay!) を許可することで、サーバーで CORS を有効にしました。
Access-Control-Allow-Origin: *
* を localhost と交換すると、ローカル マシンで実行できます。それは素晴らしいことですが、phonegap アプリのホスト名は何ですか? phonegap は内部ページをロードするためにドメインの http プロトコルに依存せず、単純にファイル プロトコル (file://) を使用するため、単なる空の文字列ではないことがわかります。
確かに他の人がこの問題に遭遇しましたか?phonegap を使用して外部 URL のデータにアクセスし、Cookie 形式での認証を要求するのは一般的な設定ですか?
何か助けてください。