2011-11-09 17 views
5

मैं website1.com में निम्नलिखित कोड है:कुकीज़ आईई में सेट नहीं किया जा सकता है?

<script type="text/javascript"> 
    document.cookie = "qwe=1"; 
    alert(document.cookie); 
</script> 

और website2.com शामिल हैं:

<iframe src="http://website1.com"></iframe> 

जब मैं IE में पेज website2.com खोलने यह खाली स्ट्रिंग अलर्ट (यदि कोई कुकीज़ पहले सेट किया गया था)।
अन्य ब्राउज़र्स "qwe = 1" को अलर्ट करते हैं।

तो प्रश्न यह है कि यह क्यों और कैसे काम करना है?

+1

शीर्षलेख ('पी 3 पी: सीपी = "सीएओ पीएसए हमारा"'); – Sam152

उत्तर

5

यह आईई में सुरक्षा के बारे में है।

आप IFRAME में कुकीज़ के लिए उपयोग, आप इस प्रकार HTTP हेडर स्थापित करना चाहिए अनुमति देते हैं चाहते हैं:

ASP.NET:

HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""); 

JSP:

response.addHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"") 

पीएचपी:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 
1

कुकीज़ document.cookie के साथ सेट की गई हैं, हालांकि उन्हें अगली पेजेलोड तक सर्वर (और इसलिए वहां कोई प्रभाव नहीं है) के साथ भेजा गया है। मुझे लगता है कि document.cookie का मानक व्यवहार यह नकल करना है और अगले पगेलोड तक पढ़ने के मूल्य को अपडेट नहीं करना है (दूसरे शब्दों में, document.cookie एक कुकी सेट करता है, लेकिन document.cookie पढ़ने में कुकीज़ को अनुरोध में भेजा गया है)।

आईई 9 पुराने संस्करणों में मौजूद कई मुद्दों को ठीक करता है। और मेरा मतलब है एलओटी। यह उनमें से एक है। कामकाज, मैं कल्पना करता हूं, कुकीज़ स्वयं को संभालने में है। बस के रूप में PHP में मैं समारोह है:

<?php 
function setRealCookie(...) { 
    setcookie(...); 
    $_COOKIE[...] = ...; 
} 
?> 

जावास्क्रिप्ट में आप एक उद्देश्य यह है कि आप के लिए कुकीज़ का ट्रैक रखता है, जो अपने आप को अद्यतन करने के लिए जब एक कुकी सेट है और इतने पर सहित बना सकते हैं। की तरह कुछ:

(cookies = { 
    data: {}, 
    init: function() { 
     var c = document.cookie.split(";"), l = c.length, i, t; 
     for(i=0; i<l; i++) { 
      t = c[i].split("="); 
      cookies.data[t.shift()] = t.join("="); 
     } 
    }, 
    read: function(key) { 
     return cookies.data[key]; 
    }, 
    set: function(key,value) { 
     document.cookie = key+"="+value; 
     cookies.data[key] = value; 
    } 
}).init(); 

तो फिर तुम cookies.set("qwe","1"); साथ एक कुकी सेट और इसे वापस पढ़ा cookies.read("qwe"); साथ कर सकते हैं।

संबंधित मुद्दे