禁用同源策略/制作跨域在WebKit的网页视图XMLHttpRequest的?
-
19-09-2019 - |
题
我想禁用在我自己的嵌入式网页视图的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: *
头到服务器响应。我不认为它是由所有的浏览器,虽然支持。
我一直在寻找如何做到这一点的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];