美文网首页
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