[Webkit-unassigned] [Bug 284516] New: 我在使用 WKWebView 加载本地 HTML 文件后,尝试通过 Axios 发起对外部域名的接口请求,出现了跨域问题
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Dec 12 00:40:41 PST 2024
https://bugs.webkit.org/show_bug.cgi?id=284516
Bug ID: 284516
Summary: 我在使用 WKWebView 加载本地 HTML 文件后,尝试通过 Axios
发起对外部域名的接口请求,出现了跨域问题
Product: WebKit
Version: WebKit Nightly Build
Hardware: iPhone / iPad
OS: iOS 16
Status: NEW
Severity: Blocker
Priority: P2
Component: Page Loading
Assignee: webkit-unassigned at lists.webkit.org
Reporter: 990219310 at qq.com
CC: beidson at apple.com
1 我在使用 WKWebView 加载本地 HTML 文件后,尝试通过 Axios 发起对外部域名的接口请求,出现了跨域问题。我的本地文件是通过 loadFileURL:allowingReadAccessToURL: 方法加载的,Axios 请求的接口是例如这种域名 https://fundaccount.chinaclear.cn/api,浏览器返回了跨域错误。” 需要确定的是我们服务器不支持全部跨域操作,无法设置Access-Control-Allow-Origin
2 然后我通过设置 allowfileAccessFromFileURLs 为YES 这种方法解决了这个问题
3 但是如果iPhone设备打开了锁定模式。在设置中可以开启这个模式。这个时候第二步就不起作用了,导致跨域报错
4 现在我们是通过WKURLSchemeHandler实现, 自定义sheme拦截
具体代码是(void)webView:(WKWebView *)webView startURLSchemeTask:(id<WKURLSchemeTask>)urlSchemeTask {
NSURL *url = urlSchemeTask.request.URL;
NSLog(@"jess test%@", url);
if ([url.pathExtension isEqualToString:@"html"] && [url.host isEqualToString:@"fundaccount.chinaclear.cn"]) {
NSString* propertyPath = [[NSBundle mainBundle] pathForResource:@"" ofType:@"html" inDirectory:@"asset"];
NSData *data = [[NSData alloc] initWithContentsOfFile:propertyPath];
NSMutableDictionary *resHeader = [NSMutableDictionary new];
[resHeader setValue:@"*" forKey:@"Access-Control-Allow-Origin"];
[resHeader setValue:@"charset=UTF-8" forKey:@"Content-Type"];
[resHeader setValue:@"text/html" forKey:@"Content-Type"];
NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:url statusCode:200 HTTPVersion:@"HTTP/1.1" headerFields:resHeader];
[urlSchemeTask didReceiveResponse:response];
[urlSchemeTask didReceiveData:data];
[urlSchemeTask didFinish];
这种方式
5 通过这种方式解决了加载本地文件跨域问题 我想确定这种方法是否是苹果支持的解决加载本地跨域的方法。
6 现在通过查阅文档说明 这种方法也有一些问题存在,希望您那里提供一下解决这种情况的官方答复
7 还想问的是我遇到的这种按情况,主要是设置allowfileAccessFromFileURLs后在手机为锁定模式下跨域问题
是否你们那里知晓这种情况
8 期望您提供官方解决我遇到问题的方法
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20241212/7719f5bc/attachment-0001.htm>
More information about the webkit-unassigned
mailing list