IOS9 WKWebView Access-Control-Allow-Origin

时间:2015-11-04 06:30:29

标签: ajax wkwebview

我使用WKWebview在IOS loadFileURL: allowingReadAccessToURL上加载本地html文件。 但是当我发送ajax请求时,它失败了。

错误是:

  

Access-Control-Allow-Origin不允许使用原点。

我是否可以设置一些属性来修复此错误,例如在Android中,我们可以使用setAllowUniversalAccessFromFileURLs

5 个答案:

答案 0 :(得分:2)

您是否尝试过这样设置?

let config = WKWebViewConfiguration()
config.setValue(true, forKey: "allowUniversalAccessFromFileURLs")

答案 1 :(得分:0)

尝试使用loadRequest而不是loadFileURL。它对我有用:

NSString* path = [[NSBundle mainBundle] pathForResource:@"pageName" ofType:@"html"];
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]];
[self.webView loadRequest:request];

之后,我的查询工作正常,而我有一个'无法发出任何来自null的请求'错误之前。

答案 2 :(得分:0)

如果要从localhtml文件中读取,则必须设置allowReadAccess

let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] let documentsURL = URL(fileURLWithPath: documentsPath, isDirectory: true) let finalURL = URL(string: htmlurl) webview.loadFileURL(finalURL!, allowingReadAccessTo: documentsURL)

答案 3 :(得分:0)

在Chrome上,尽管使用了正确的CORS标头,但在本地主机上,CORS请求将无法正常工作,只是说..继续努力奋斗

答案 4 :(得分:0)

使用以下配置设置将WkWebView本地加载到HTML(文件URL)时,WkWebView对我有用

WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
WKUserContentController *userContentController = [[WKUserContentController alloc] init];

[theConfiguration.preferences setValue:@"TRUE" forKey:@"allowFileAccessFromFileURLs"];
[theConfiguration setValue:@"TRUE" forKey:@"allowUniversalAccessFromFileURLs"];

设置以上设置后,原点将以“ file://”而不是null传递