sourcecode

IOS9 WK Web View접근 제어 허가 발신지

codebag 2023. 3. 29. 21:27
반응형

IOS9 WK Web View접근 제어 허가 발신지

로컬 html 파일을 IOS에 로드합니다.WKWebview사용.loadFileURL: allowingReadAccessToURL..그런데 내가 ajax 요청을 보내면 실패한다.

에러는 다음과 같습니다.

출발지 null은 Access-Control-Allow-Origin에서 허용되지 않습니다.

이 오류를 수정하기 위해 몇 가지 속성을 설정할 수 있습니까? 예를 들어 Android에서는setAllowUniversalAccessFromFileURLs?

이렇게 세팅해 봤어요?

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

HTML이 로컬(파일 URL)에 로드되어 WkWebView의 설정이 아래인 경우 WkWebView가 기능했다.

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

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

위의 설정을 설정하면 오리진은 null이 아닌 "file://"로 전달됩니다.

loadFileURL 대신 loadRequest를 사용해 보십시오.효과가 있었습니다.

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

그 후, 이전에 "Cannot make any requests from null" 에러가 발생했을 때, 쿼리는 정상적으로 동작했습니다.

Chrome에서는 로컬호스트에서 CORS 요구가 제대로 된 CORS 헤더를 디스패치하는 것은 동작하지 않습니다.그것에 대해 계속 머리를 부딪치다

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)

언급URL : https://stackoverflow.com/questions/33515124/ios9-wkwebview-access-control-allow-origin

반응형