2011-02-16 2 views
2

MSXML2.XMLHTTP.3.0 개체는 어떻게 동일한 세션에 연결합니까? 내 자신의 ActiveX 컨트롤이이 동작을 표시하고 싶습니다.ActiveX 컨트롤에서 Internet Explorer의 쿠키를 어떻게 사용할 수 있습니까?

는의 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

아마도 XMLHTTP 객체는 쿠키를 공유하는 싱글 톤일 것입니다. 나는 단순히 XMLHTTP 개체를 만들고 내 자신의 액티브 X를 구현하고, 나는 샘플 (아래 의사 코드) 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; 
관련 문제