8

我想在我自己的嵌入式 WebViews 中禁用 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

我认为无论如何你都很难找到一种对你有用的方式来做到这一点。您是否考虑过 JSONP 而不是 XHR? 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 回答