8

自分の埋め込みWebViewでXMLHttpRequestsの同一生成元ポリシーを無効にしたいと思います。WebViewで読み込まれるページ/実行されるコードを制御できるので、同一生成元ポリシーを適用する必要はありません。クロスドメインリクエストを行いたいのですが。

WebPolicyDelegateとWebResourceLoadDelegateを実装しようとしましたが、XMLHttpRequestsに対して呼び出されていないようです。

4

4 に答える 4

1
void WebSettingsImpl::setWebSecurityEnabled(bool enabled)
{
    m_settings->setWebSecurityEnabled(enabled);
}

うまくいけば、これはあなたが必要なものです!webkitのメッセージを送ってください。

于 2010-10-16T05:28:44.720 に答える
1

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];
于 2012-03-22T15:19:36.883 に答える
0

とにかく自分に役立つ方法でそれを行うのに苦労するだろうと思います。XHRの代わりにJSONPを検討しましたか? http://en.wikipedia.org/wiki/JSON

大まかな概要は、JSONPが上記で使用しているのと同じメカニズムを使用して外部スクリプトを要求することです。違いは、サーバーがこれを認識し、JSON応答をコールバックメソッドの引数としてパッケージ化することです。サイトがこの「スクリプト」を受信すると、それを実行して、データをコールバックメソッドに直接返します。

jQueryのようなフレームワークを使用できる場合、クライアント側のほとんどは透過的に処理されます。実際、XHR(AJAX)リクエストに使用するのと実質的に同じメソッドを使用します。ここでそれをチェックしてください: http: //api.jquery.com/jQuery.getJSON/

于 2010-09-08T00:18:56.550 に答える
0

Access-Control-Allow-Origin: *サーバーの応答にヘッダーを追加してみてください。ただし、すべてのブラウザでサポートされているとは限りません。

詳細:https ://developer.mozilla.org/en/HTTP_access_control

于 2010-09-08T00:25:01.810 に答える