¿Puedo forzar a todos los eslabones de una vista web (o WebFrame) para ser tratados como rutas absolutas?

StackOverflow https://stackoverflow.com/questions/1276036

Pregunta

Así que estoy trabajando con WebKit de - WebView y WebFrame. Yo uso un NSURLProtocol personalizada para recuperar el código HTML para cada solicitud de una base de datos. El problema surge del hecho de que los enlaces en el HTML son relativos, cuando en realidad debería ser absoluta. Por ejemplo, la página

foo/bar.html

puede tener un enlace en ella que apunta a

foo/baz.html

El problema es que, dado que el enlace es relativa, la solicitud termina siendo para

/foo/foo/baz.html

Hasta ahora, he tratado de evitar esto comparando las dos direcciones URL y quitándose el prefijo común - en este caso, 'foo /' - dejándome con foo / baz.html. Esto no funciona para todas las posibilidades, sin embargo, especialmente cuando hay múltiples directorios en la ruta. Lo hago en el "didStartProvisionalLoadForFrame:" Método de frameLoadDelegate de mi vista web

.

Por desgracia, no tengo control sobre el código HTML que estoy mostrando, por lo que la modificación de los propios enlaces no es una opción.

¿Fue útil?

Solución

Trate de ser delegado de carga de recursos de la estructura principal, y la implementación de webView:resource:willSendRequest:redirectResponse:fromDataSource: a modificar la dirección URL que se solicita. Enviar relativeString a la URL de la solicitud para obtener la dirección URL relativa original, a continuación, utilizar -[NSURL initWithString:baseURL:] para crear una nueva dirección URL con la misma cadena relativa frente a la URL base correcta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top