Название: [решено] QWebKit & headers Отправлено: serg_hd от Декабрь 08, 2009, 20:57 Загружаю куда-нибудь страницу (в QWebView, QWebPage, неважно). Можно ли перед загрузкой этой самой страницы указать желаемое значение хедера, например referer'а, чтобы страница не знала откуда я действительно пришёл - direct enter это или конкретный любой адрес?
К networkAccessManager() можно получить доступ через page(): webview1.page().networkAccessManager() Но, насколько я понял, рефер подставить он не даёт( Их, в принципе, можно задать через QNetworkRequest.setRawHeader(), но как ему "сказать" что эти хедеры нужно применить именно к моей загружаемой QWebView? Название: Re: QWebKit и headers Отправлено: sendevent от Декабрь 08, 2009, 22:06 последнее предложение нифига не понял=) но "изменять реквесты" - можно, например, в QNetworkAccessManager::createRequest.
Код: webview1.page().setNetworkAccessManager( m_pMyNetworkMgr );//-- есть доступ к траффику! Название: Re: QWebKit & headers Отправлено: serg_hd от Декабрь 08, 2009, 22:58 Зачем мне реквесты, мне реферы свои прописать нужно. А ты вообще про создание запроса говоришь.
У меня есть страница php, в которой например: <?php if (isset($_SERVER['HTTP_REFERER'])) echo "referer: ".$_SERVER['HTTP_REFERER']; ?> Если я гружу её в qwebview, то рефера ессно не будет, сообщения тоже, потому что не было никакого перехода. Если поставить свой, то сообщение будет. Для справки, рефер это урл, с которого пришли на текущий. Название: Re: QWebKit & headers Отправлено: sendevent от Декабрь 09, 2009, 01:21 Цитировать Для справки, рефер это <...> ;D спасибо, кэп!Цитировать Зачем мне реквесты, мне реферы свои прописать нужно. не поверишь...Название: Re: QWebKit & headers Отправлено: serg_hd от Декабрь 09, 2009, 11:57 Цитировать Для справки, рефер это <...> ;D спасибо, кэп!Ну так какие ещё идеи насчёт прописи своего хедера для QWebView, а не создания отдельного запроса (просьба если отвечать, то по теме)? Название: Re: QWebKit & headers Отправлено: sendevent от Декабрь 09, 2009, 12:44 абзац.
речи о создании реквостов и не было. речь идет об изменении уже созданных запросов. ты ж вроде понимаешь, што реферер - это хидер в хттп-пакете. хттп-пакеты создаются вебкитом. неужто не понятно, что если нету "QWebPage::setReferer( const QUrl& );", то чтобы добавить реферера (изменить юзер-агента и пр) - надо самому отлавливать хттп-пакеты вебкита перед отправкой и кастомизировать их? Код: /*virtual*/ QNetworkReply* MyNetworkAccessManager::createRequest( Operation op, Название: Re: QWebKit & headers Отправлено: serg_hd от Декабрь 09, 2009, 13:24 Я сразу не понял, что ты имел ввиду перегрузку метода, а QNetworkAccessManager::createRequest у меня проассоциировалось именно с созданием запроса.
В принципе изначально я расчитывал, что есть такой метод, который можно было бы применить по отношению к моей qwebpage (как отдельный метод networkAccessManager'а например) без перегрузки его метода createRequest(). Странно, конечно, что это можно делать только так. Тем не менее, спасибо, попробую Название: Re: [решено] QWebKit & headers Отправлено: serg_hd от Декабрь 09, 2009, 16:54 Да, перегрузил его, заблаговременно унаследовав класс:
Код В другом классе: Код Всё ок, пасиб ещё раз, будет мне опыт на будущее (в прикладном прогр-нии я новичёк). Название: Re: [решено] QWebKit & headers Отправлено: sendevent от Декабрь 09, 2009, 17:01 QWeb(View|Page) - предназначены для отображения контента, логично, что не предоставляют доступа к "низкоуровневым" аттрибутам хттп (хотя User-Agent'a можно переопределить в QWebPage).
кстати, обрати внимание: пришедший req может быть connect'ед с кем нибудь (самому смотреть лень), и при подобном "копировании" эти связи похерятся - возможно, лучше воспользоваться приведением типов. Название: Re: [решено] QWebKit & headers Отправлено: serg_hd от Декабрь 09, 2009, 17:09 QWeb(View|Page) - предназначены для отображения контента, логично, что не предоставляют доступа к "низкоуровневым" аттрибутам хттп (хотя User-Agent'a можно переопределить в QWebPage). Так дело в том, что можно установить даже прокси, хотя не прямыми методами QWebView, но qwebview.page().networkAccessManager().setProxy(); - увидел случайно пока искал как указать хедеры. Этот вариант гораздо удобнее чем мой первоначальный: QNetworkProxy.setApplicationProxy(proxy); и, видимо, не относится к приложению в целом (мне так и нужно). Вот я и подумал, может также и хедеры можно указать через определённое дерево связей перед отправкой запроса, мало ли.Название: Re: [решено] QWebKit & headers Отправлено: serg_hd от Декабрь 09, 2009, 17:26 А вообще QT Jambi и QWebKit в частности для меня очень интересны. Для реализации моей проги (веб-сёрфер) я перепробовал 4 фреймворка имитирующих работу браузеров. Но такого богатого инструментария как в QWebKit ни в одном из них не было.
|