2014-01-28 4 views
1

Я создал веб-браузер для iOS, и я пытаюсь вывести URL-адрес для отображения в адресной строке.
Я рассматриваю NSURLRequest в webView:shouldStartLoadWithRequest:navigationType: и webViewDidFinishLoad:UIWebView Методы делегата.В чем разница между свойствами mainDocumentURL и свойствами URL NSURLRequest?

Должен ли я использовать URL или mainDocumentURL недвижимость NSURLRequest с этой целью, и в чем разница?

ответ

1

Документация не очень ясна, но кажется, что mainDocumentURL используется для внутренних политик cookie.

От NSHTTPCookieStorage Class Reference > setCookies:forURL:mainDocumentURL:

mainDocumentURL

URL-адрес основного HTML документа для фрейма верхнего уровня, если он известен. Может быть ноль. Этот URL-адрес используется для определения того, должен ли cookie быть принят, если политикой принятия cookie является NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain.

Если возможно, что используемый вами URL-адрес является подкадром или некоторым типом носителя, встроенным в документ HTML, то вы можете знать, что такое mainDocumentURL; в противном случае просто используйте URL.

3

Вы хотите использовать URL.

mainDocumentURL будет использоваться при загрузке частей страницы (например, изображений, скриптов и т. Д.), Чтобы сообщить системе, какие файлы cookie можно безопасно использовать при загрузке этих частей. Это ничего, что вы хотели бы отображать, и документировано, чтобы оно не использовалось в текущей версии фреймворка.

/*! 
    @method mainDocumentURL 
    @abstract The main document URL associated with this load. 
    @discussion This URL is used for the cookie "same domain as main 
    document" policy. There may also be other future uses. 
    See setMainDocumentURL: 
    NOTE: In the current implementation, this value is unused by the 
    framework. A fully functional version of this method will be available 
    in the future. 
    @result The main document URL. 
*/ 
+0

В каких документах указано, что оно не используется? Похоже, что в тестах, которые я запускал, этот URL-адрес не задан, а mainDocumentURL установлен в методе webView: shouldStartLoadWithRequest: navigationType: delegate в некоторых случаях. – Austin

+0

Я не понимаю, как NSURLRequest загрузит что-либо, если у него нет загружаемого URL-адреса, но я не эксперт в этой области. –

+0

Я бы посоветовал использовать mainDocumentURL вместо URL. На самом деле URL-адрес может ссылаться на часть сайта, на которой в настоящее время отображается UIWebView. – Joss

Смежные вопросы