QWebEnginePage headers issue



  • Using QWebEnginePage to download web pages. Works very well but some it doesn't work with certain URLs and appears to be a header issue. I can't figure out what headers to send to not get this error.

    Header:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QApplication>
    #include <QWebEnginePage>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private:
        QWebEnginePage *p;
        Ui::MainWindow *ui;
    protected slots:
        void getHtml(bool s);
        void textChanged();
    
    signals:
    
    
    };
    
    #endif // MAINWINDOW_H
    
    

    Source

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QApplication>
    #include <QWebEnginePage>
    #include <QWebEngineSettings>
    #include <QWebEngineHttpRequest>
    
    QWebEngineHttpRequest httpR;
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow){
        ui->setupUi(this);
        p = new QWebEnginePage(this);
        httpR.setHeader("Location", "absoluteURI");
        httpR.setUrl(QUrl("https://ca.finance.yahoo.com/quote/AIPT/history?period1=1238597365&period2=1554130165&interval=1d&filter=history&frequency=1d"));
        p->settings()->setAttribute(QWebEngineSettings::AutoLoadImages, false);
        p->settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
        connect(p, SIGNAL(loadFinished(bool)), this, SLOT(getHtml(bool)));
        p->load(httpR);
    
    }
    
    
    QString html = "";
    void MainWindow::getHtml(bool s){
       p->toHtml(
           [this](QString result) {
               html=result;
               this->textChanged();
               qDebug()<<httpR.headers();
        });
    }
    
    void MainWindow::textChanged(){
        qDebug()<<html.size();
    }
    
    MainWindow::~MainWindow(){
        delete ui;
    }
    
    

    Error message:

    js: Unrecognized Content-Security-Policy directive 'disown-opener'.

    js: Unrecognized Content-Security-Policy directive 'disown-opener'.

    860801
    QVector("Location")
    js: Unrecognized Content-Security-Policy directive 'disown-opener'.

    js: Unrecognized Content-Security-Policy directive 'disown-opener'.

    js: Unrecognized Content-Security-Policy directive 'disown-opener'.

    js: The resource https://pagead2.googlesyndication.com/pagead/js/r20190327/r20190131/show_ads_impl.js was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it Please make sure it has an appropriate as value and it is preloaded intentionally.



  • So I finally figured it out. It appears to fix the " Unrecognized Content-Security-Policy directive 'disown-opener" error you would have to incorporate the html tag attribute "rel=noopener" in each link tag. However since I want to download html webpages from other sources it would be a bit hard to change each link.

    Instead after some trial and error I found that this header "Upgrade: websocket" fixed the issue.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.