У меня есть простое приложение Qt, которое загружает страницу в файл QWebEngineView
. Я хотел бы перенаправить все HTTP-запросы со словом «статический» в URL-адресе на локальные файлы. Используя 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.