我想禁用在我自己的嵌入式网页视图的XMLHttpRequest同源策略。我有过装在WebView中被执行/代码的网页控制,所以我不在乎执行同源策略。我想使跨域请求。

我已经试过落实WebPolicyDelegate和WebResourceLoadDelegate,但他们似乎并没有被调用的XMLHttpRequest。

有帮助吗?

解决方案

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

希望这是你需要的东西! 你可以给我一个信息的WebKit的。

其他提示

我想你会很难找到反正这样做的方式,是对你有用。你有没有考虑JSONP,而不是XHR时? http://en.wikipedia.org/wiki/JSON

在高级概述是JSONP使用用于请求外部脚本作为您使用上述相同的机构。不同的是,您的服务器将认识到这一点,并会打包JSON响应为参数的回调方法。当你的网站接收到这个“脚本”,则执行它,从而直接返回数据到回调方法。

如果你能够使用像jQuery框架,大部分的客户端将被透明地为您处理。事实上,它会在无形中使用您使用XHR(AJAX)请求相同的方法。看看这里: http://api.jquery.com/jQuery.getJSON/

您可以尝试添加Access-Control-Allow-Origin: *头到服务器响应。我不认为它是由所有的浏览器,虽然支持。

更多信息: https://developer.mozilla.org/en/HTTP_access_control

我一直在寻找如何做到这一点的OSX。原来 WebPreferences 有一个私有方法:setWebSecurityEnabled。设置此为假,它应该工作。

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];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top