그래서 WebKit의 WebView 및 WebFrame을 사용하고 있습니다. 사용자 지정 NSURLProtocol을 사용하여 데이터베이스에서 각 요청에 대한 HTML을 검색합니다. 문제는 HTML의 링크가 모두 절대적이어야한다는 사실에 기인합니다. 예를 들어, 페이지WebView (또는 WebFrame)의 모든 링크를 절대 경로로 처리 할 수 있습니까?
foo/bar.html
링크가 상대이기 때문에 문제는, 요청이
/foo/foo/baz.html
위한 것으로 끝나는 것이
foo/baz.html
를 가리키는 거기에 링크가있다
지금까지 두 URL을 비교하고 공통 접두사를 제거하여이 문제를 해결하려고했습니다.이 경우 'foo /'입니다. foo/baz.html을 남겨 둡니다. 그러나 경로 상에 여러 개의 디렉토리가있는 경우이 기능은 모든 가능성에 대해 작동하지 않습니다. 내 WebView의 frameLoadDelegate의 "didStartProvisionalLoadForFrame :"메소드에서이 작업을 수행합니다.
불행히도 내가 표시하는 HTML을 제어 할 수 없어 링크 자체를 수정하는 것은 옵션이 아닙니다.
어떤 이유에서 [request relativeString]은 현재 URL이 이미 앞에 붙어있는 전체 URL을 제공합니다. 즉, relativeString과 absoluteString은 동일한 문자열을 반환합니다. –
그래서 나는 그것을 해결했습니다. webView : resource : willSendRequest : redirecResponse : fromDataSource :에서 요청의 URL과 현재 페이지의 URL을 얻습니다. 마지막 경로 구성 요소를 제거하여 현재 디렉토리를 가져온 다음 요청의 URL 시작 부분에서 제거하십시오. 적어도 올바른 방향으로 나를 지적 했으므로이 대답을 받아 들일 것입니다. 감사! –