自分の埋め込みWebViewでXMLHttpRequestsの同一生成元ポリシーを無効にしたいと思います。WebViewで読み込まれるページ/実行されるコードを制御できるので、同一生成元ポリシーを適用する必要はありません。クロスドメインリクエストを行いたいのですが。
WebPolicyDelegateとWebResourceLoadDelegateを実装しようとしましたが、XMLHttpRequestsに対して呼び出されていないようです。
自分の埋め込みWebViewでXMLHttpRequestsの同一生成元ポリシーを無効にしたいと思います。WebViewで読み込まれるページ/実行されるコードを制御できるので、同一生成元ポリシーを適用する必要はありません。クロスドメインリクエストを行いたいのですが。
WebPolicyDelegateとWebResourceLoadDelegateを実装しようとしましたが、XMLHttpRequestsに対して呼び出されていないようです。
void WebSettingsImpl::setWebSecurityEnabled(bool enabled)
{
m_settings->setWebSecurityEnabled(enabled);
}
うまくいけば、これはあなたが必要なものです!webkitのメッセージを送ってください。
OSXでこれを行う方法を探していました。WebPreferencesにはプライベートメソッドがあることがわかりました: setWebSecurityEnabled
。これをfalseに設定すると、機能するはずです。
http://trac.webkit.org/browser/trunk/Source/WebKit/mac/WebView/WebPreferences.mm?rev=111350#L1011
したがって、たとえば:
NSString* noSecurityPreferencesId = @"noSecurity";
WebPreferences* prefs = [[WebPreferences alloc] initWithIdentifier: noSecurityPreferencesId];
[prefs setWebSecurityEnabled: false];
[webView setPreferencesIdentifier: noSecurityPreferencesId];
とにかく自分に役立つ方法でそれを行うのに苦労するだろうと思います。XHRの代わりにJSONPを検討しましたか? http://en.wikipedia.org/wiki/JSON
大まかな概要は、JSONPが上記で使用しているのと同じメカニズムを使用して外部スクリプトを要求することです。違いは、サーバーがこれを認識し、JSON応答をコールバックメソッドの引数としてパッケージ化することです。サイトがこの「スクリプト」を受信すると、それを実行して、データをコールバックメソッドに直接返します。
jQueryのようなフレームワークを使用できる場合、クライアント側のほとんどは透過的に処理されます。実際、XHR(AJAX)リクエストに使用するのと実質的に同じメソッドを使用します。ここでそれをチェックしてください: http: //api.jquery.com/jQuery.getJSON/
Access-Control-Allow-Origin: *
サーバーの応答にヘッダーを追加してみてください。ただし、すべてのブラウザでサポートされているとは限りません。