2012-01-20 7 views
1

私はQWebViewを持っていて、特定のページを読み込み、ユーザーはログインしてビジネスに行きます。これはすべて正常に動作します。複数のフレーム/ページが同じセッションデータを共有するQWebView

私がしたいのは、ログインしたユーザーセッションとそのジャズすべてを使用して、小さなUSB画面に表示するためのイメージファイルにレンダリングするレポートページを読み込むための、2番目のフレーム/ 。

今は完全に異なるWebViewを使用して保護されたページにアクセスすることはできませんが、セキュリティ上のリスクがあります。ここで

は、私は考えています何のためにいくつかの擬似コードです:

webView->mainFrame->loadNormalUrl 
secretFrame = webView->createSecretFrame 
secretFrame->useSessionOf(webView->mainFrame) 
secretFrame->loadReportUrl 
secretFrame->doStuffThatAlreadyWorks 

すべてのヘルプ、ポインタ、リンクはスーパー参考になります!ありがとう:)

答えて

2

まあ、

この質問は、受信して答えたので、私はqtwebkitメーリングリストにオフにパターニングし、彼らは非常に有用だったしませんでした。

重要なことは、QNetworkCookieJarをサブクラス化することです。これは、コンストラクタで呼び出す最も重要なメソッドで、ディスクからのロードです。コースの

QList<QNetworkCookie> cookies; 
if (m_file.open(QIODevice::ReadOnly | QIODevice::Text)) { 
    QTextStream in(&m_file); 
    QString txt = in.readAll(); 
    QStringList lines = txt.split("\n"); 
    foreach (QString c, lines) { 
    cookies.append(QNetworkCookie::parseCookies(c.toUtf8())); 
    } 
    m_file.close(); 
} 
setAllCookies(cookies); 

、あなたはそうのように、書き込み機能をも必要があります:あなたはWebKitのソースをダウンロードした場合、

QList<QNetworkCookie> cookies = allCookies(); 
m_rawCookies.clear(); 

foreach (const QNetworkCookie &cookie, cookies) { 
    m_rawCookies.append(cookie.toRawForm()); 
} 

QTextStream out(&m_file); 
     foreach (const QByteArray &cookie, m_rawCookies) 
      out << cookie + "\n"; 
     m_file.close(); 

そしてそうのようなあなたの生のクッキーより完全な例については、テストブラウザのコードをご覧ください。

1

これは、QWebViewsを使ってやってみるのではなく、QNetworkManagerをサブクラス化し、その信号を返送して返送するQNetworkReplysをスヌープすることです。

2番目のQWebViewでは、表示するHTMLにコンテンツを設定するだけで、キャッシュからデータを取得することができます。

+0

結論として、私はQNetworkCookieJarをサブクラス化し、独自のファイルシステムストアを実装することでこれを実現しました。サンプルコードは、テストブラウザ用のqwebkitソースコードにあります。しかし、上記は良い考えです。私はここに答えを投稿しなければならないのか分かりません...私はいつも自分の質問に答えるつもりはありません... –