首页 > 解决方案 > WinHTTP GET 请求不会在 Google Analytics 中触发

问题描述

WinHttp GET 请求返回 200 OK,但是 Google Analytics 不会触发它,当从浏览器访问页面时它是 OK 的。你知道这里有什么问题吗?

我也在 C++ 代码中添加了额外的头文件......

============= test.php ============

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
    <meta name="description" content="Test page" />
    <meta name="keywords" content="Test" />
    <meta name="robots" content="index, follow" />

    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-xxxxxxxxx-1"></script>
    <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'UA-xxxxxxxxx-1');
    </script>
    </head>

    <body>
    This is test page!
    </body>

    </html>

这是C++代码

============= C++代码=============

    #include <windows.h>
    #include <winhttp.h>
    #include <iostream>
    #include <string>
    #include <algorithm>

    int main(){

    DWORD dwSize = 2000;
    DWORD dwDownloaded = 0;
    LPSTR pszOutBuffer;
    DWORD headerSize = 0;
    char * lpOutBuffer = new char[dwSize / sizeof(char)];

    HINTERNET hSession = NULL;
    HINTERNET hConnect = NULL;
    HINTERNET hRequest = NULL;

    // Use WinHttpOpen to obtain a session handle.
    hSession = WinHttpOpen(L"WinHTTP Example/1.0",
        WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
        WINHTTP_NO_PROXY_NAME,
        WINHTTP_NO_PROXY_BYPASS, 0);

    // Specify an HTTP server.
    if (hSession)
        hConnect = WinHttpConnect(hSession, L"mydomain.com",
            INTERNET_DEFAULT_HTTPS_PORT, 0); //443 port for SSL/TLS

    std::cout << "hConnect " << hConnect << std::endl;

    // Create an HTTP request handle.
    if (hConnect)
        hRequest = WinHttpOpenRequest(hConnect, L"GET", L"/test.php",
            L"HTTP/1.1", WINHTTP_NO_REFERER,
            NULL,
            WINHTTP_FLAG_SECURE); //SECURE FLAG


    std::cout << "hRequest " << hRequest << std::endl;


    if (hRequest) { //Adding Headers

        std::cout << "Adding headers!\n";
        WinHttpAddRequestHeaders(hRequest,
            L"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            -1L,
            WINHTTP_ADDREQ_FLAG_ADD);
        WinHttpAddRequestHeaders(hRequest,
            L"Accept-Encoding: gzip, deflate, br",
            -1L,
            WINHTTP_ADDREQ_FLAG_ADD);

        WinHttpAddRequestHeaders(hRequest,
            L"Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3",
            -1L,
            WINHTTP_ADDREQ_FLAG_ADD);

        WinHttpAddRequestHeaders(hRequest,
            L"Connection: keep-alive",
            -1L,
            WINHTTP_ADDREQ_FLAG_ADD);

        WinHttpAddRequestHeaders(hRequest,
            L"Host: mydomain.com",
            -1L,
            WINHTTP_ADDREQ_FLAG_ADD);

        WinHttpAddRequestHeaders(hRequest,
            L"Upgrade-Insecure-Requests: 1",
            -1L,
            WINHTTP_ADDREQ_FLAG_ADD);

        WinHttpAddRequestHeaders(hRequest,
            L"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0",
            -1L,
            WINHTTP_ADDREQ_FLAG_ADD);


    }

    // Send a request.
    BOOL bResults;
    if (hRequest)
        bResults = WinHttpSendRequest(hRequest,
            WINHTTP_NO_ADDITIONAL_HEADERS,
            0, WINHTTP_NO_REQUEST_DATA, 0,
            0, 0);


    std::cout << "bResults " << bResults << " " << GetLastError() << std::endl;

    if (bResults)
        bResults = WinHttpReceiveResponse(hRequest, NULL);

    std::cout << "bResults " << bResults << " " << GetLastError() << std::endl;
'''

标签: winhttp

解决方案


推荐阅读