QNetworkReply 不会在 HTML 注释中隐藏 JavaScript
Posted
技术标签:
【中文标题】QNetworkReply 不会在 HTML 注释中隐藏 JavaScript【英文标题】:QNetworkReply doesn't get JavaScript hidden in HTML Comment 【发布时间】:2013-10-20 06:26:08 【问题描述】:我正在使用 Qt 4.8 发出 HTTP Post 请求。
void post()
QByteArray parameters;
QUrl url("http://www.somerandomurl.com");
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QNetworkReply* reply = network_access_manager->post(request, parameters);
void requestfinished(QNetworkReply* reply)
QString response(QString::fromUtf8(reply->readAll()));
std::cout << response.toStdString() << std::endl;
我应该得到的 html 页面在 HTML 注释中隐藏了 javascript。如果我使用 Firefox/Chrome 查看它或使用 Python3 发出 HTTP 请求,我会以我想要的方式得到带有 Javascript 代码的评论。看起来像这样:
<script language="JavaScript">
<!--
Javascript Code
Javascript Code
Javascript Code
//-->
</script>
但是,对于 Qt 示例,我只能得到没有 Javascript 的评论。
<script language="JavaScript">
<!--
//-->
</script>
有没有办法通过 Qt 4.8 获取 Javascript?
【问题讨论】:
【参考方案1】:在我看来,这似乎不太可能是由 Qt 过滤 JavaScript 引起的,但更有可能是服务器上的某些东西基于用户代理执行某些操作。在发送请求之前尝试致电request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36");
。
而且你的请求看起来有点奇怪。您正在使用 Content-type "application/x-www-form-urlencoded" 发布,但未提供任何数据。为什么不直接获取 URL?
另外,如果你可以分享 URL,调试起来会更容易。当然,如果不可能,那也没关系。
【讨论】:
以上是关于QNetworkReply 不会在 HTML 注释中隐藏 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章
QNetworkReply:在 QWebView 中禁用了网络访问