美文网首页
webbrowser IE与cef webkit共享cookie

webbrowser IE与cef webkit共享cookie

作者: 爱写诗的程序员zxp | 来源:发表于2021-02-22 14:06 被阅读0次

通过p3p安全策略解决,只需在写入cookie的地方加入p3p策略就好。

QString p3p = "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR";
            rtn = setCookieA(QString("http://"+cookie_url).toStdString().c_str(), QString(cookie_name+"="+cookie).toStdString().c_str(), p3p.toStdString().c_str());
static DWORD setCookieA(const char* url, const char* cookie, const char* sP3P)
{
    DWORD flags = 0;
    char cok[8192]; strcpy(cok, cookie); strlwr(cok);
    if (strstr(cok, "httponly"))    flags = INTERNET_COOKIE_HTTPONLY;
    char* domain = strstr(cok, "domain=");
    if (domain) {
        char dns1[512]; char dns2[512]; int i; int l1 = strlen(url);
        for (i = 7; i < l1 &&i < 512; ++i) {
            if (url[i] == '/')break;
            dns1[i - 7] = tolower(url[i]);
        }
        dns1[i - 7] = 0;
        for (i = 7; domain[i] && i < 512; ++i) {
            if (domain[i] == ';' || isspace(domain[i]))break;
            dns2[i - 7] = domain[i];
        }
        dns2[i - 7] = 0;
        if (!strstr(dns1, dns2)) { //不是同一个域名
            flags |= INTERNET_COOKIE_THIRD_PARTY;
        }
    }
    //P3P
    const char* p3p = NULL;
    if (sP3P && strcmp(sP3P, "-") != 0 && strlen(sP3P) > 0) {
        flags |= INTERNET_COOKIE_EVALUATE_P3P;
        p3p = sP3P;
    }

    //wchar_t * cookie_wchar_t = ANSIToUnicode(cookie);
    //logFile(QString::fromWCharArray(cookie_wchar_t));
    //free(cookie_wchar_t);

    DWORD ret;
    ret = real_InternetSetCookieExA(url, NULL, cookie, flags, (DWORD_PTR)p3p);
    return ret;
}

相关文章

网友评论

      本文标题:webbrowser IE与cef webkit共享cookie

      本文链接:https://www.haomeiwen.com/subject/xsohfltx.html