Как я могу использовать файлы cookie Internet Explorer в своем элементе управления ActiveX? - PullRequest
2 голосов
/ 16 февраля 2011

Как объект MSXML2.XMLHTTP.3.0 подключается к одному и тому же сеансу? Я хотел бы, чтобы мой собственный элемент управления ActiveX демонстрировал такое поведение.

index.php: (язык на стороне сервера не имеет значения):

<?php session_start(); session_write_close(); ?>
<html>
<head>
<title>Disp Test</title>
<script type="text/javascript">
window.onload = function()
{
    var divJS;
    var objXHR;

    divJS = document.getElementById('js');

    objXHR = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    objXHR.open("GET", "ajax.php", false);
    objXHR.send();
    divJS.innerHTML = objXHR.responseText;
}
</script>
</head>
<body>
<p>Your session ID: <?php echo session_id(); ?></p>

<div id="js">
Please enable Javascript.
</div>

</body>
</html>

ajax.php:

<?php session_start(); session_write_close();?>
Your session ID from AJAX: <?php echo session_id(); ?>

Результат:

Your session ID: d2ljvbjllsdlc51rsq5naiffc2

Your session ID from AJAX: d2ljvbjllsdlc51rsq5naiffc2

1 Ответ

1 голос
/ 16 февраля 2011

Возможно, объект XMLHTTP - это одноэлементный файл, который совместно использует файлы cookie.Я реализовал свой собственный ActiveX, который просто создает объект XMLHTTP, и он просто работает , когда я заменяю objXHR в примере (псевдокод ниже):

IXMLHTTPRequest* pX;
hr = CoCreateInstance(CLSID_XMLHTTP, NULL, CLSCTX_INPROC_SERVER, IID_IXMLHTTPRequest, (void**)&pX);
if(SUCCEEDED(hr))
{
    hr = pX->open("GET", "ajax.php", false);
    if(SUCCEEDED(hr))
    {
        hr = pX->send();
        if(SUCCEEDED(hr))
        {
            VariantInit(pVarResult);
            V_VT(pVarResult) = VT_BSTR;
            hr = pX->get_responseText(&V_BSTR(pVarResult));
            if(!SUCCEEDED(hr))
            {
                VariantClear(pVarResult);
            }
        }
    }

    pX->Release();
}

return S_OK;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...