【发布时间】:2017-11-10 13:27:23
【问题描述】:
我有一个简单的 Qt 应用程序,它在 QWebEngineView 中加载一个页面。我想将url中带有“static”一词的所有http请求重定向到本地文件。使用WebUrlRequestInterceptor 我重新实现了interceptRequest 方法。代码如下:
class MyWebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
{
public:
void interceptRequest(QWebEngineUrlRequestInfo &info) {
if (info.requestUrl().toString().contains("static")) {
QString newUrl = QDir::currentPath() + info.requestUrl().toString().mid(21, info.requestUrl().toString().length());
qDebug() << "new url = " << newUrl;
info.redirect(QUrl::fromLocalFile(newUrl));
}
}
};
在主函数中我做了
MyWebUrlRequestInterceptor *wuri = new MyWebUrlRequestInterceptor();
QWebEngineProfile::defaultProfile()->setRequestInterceptor(wuri);
interceptRequest 似乎工作正常,但我收到一条消息。
不允许加载本地资源
我在网上搜索了很多人都说我应该添加--disable-web-security 标志。所以我在我的.pro 文件中做了:
QMAKE_CXXFLAGS += --disable-web-security
但它似乎不起作用。难道我做错了什么?有不同的解决方案吗?我可以制作自定义协议来提供本地文件并在 Qt 中重定向到它们作为解决方法吗?
我正在使用 Qt 5.9.1 和 QtCreator 4.3.1。
【问题讨论】:
标签: c++ qt http-redirect http-protocols qwebengineview