2015-08-24 6 views
6

में काम नहीं कर रहा है मुझे इंटरनेट एक्सप्लोरर में लगातार कुकीज़ के साथ समस्या है, यानी, मैं कुकीज़ सेट कर सकता हूं, लेकिन उन्हें लगातार नहीं बना सकता। मैं इंटरनेट एक्सप्लोरर 11 का उपयोग कर रहा हूं, और "इंटरनेट विकल्प" -> "उन्नत" -> "रीसेट" करने का प्रयास किया है, लेकिन इससे मदद नहीं मिली।लगातार कुकी इंटरनेट एक्सप्लोरर

मैं इस परीक्षण कोड लिखा है:

class Program { 
    public static void Main(string[] args) { 
     HttpListener listener = new HttpListener(); 
     listener.Prefixes.Add("http://+:7777/"); 
     listener.Start(); 

     ThreadPool.QueueUserWorkItem((o) = > { 
      while (listener.IsListening) { 
       ThreadPool.QueueUserWorkItem((c) = > { 
        HandleRequest(c as HttpListenerContext); 
       }, listener.GetContext()); 
      } 
     }); 

     Console.Write("Press any key to quit . . . "); 
     Console.ReadKey(true); 
     listener.Stop(); 
     listener.Close(); 
    } 

    static void HandleRequest(HttpListenerContext ctx) { 
     var cookie = ctx.Request.Cookies["TestCookie"]; 

     if (cookie == null) { 
      Console.WriteLine("Setting cookie..."); 
      var expiryDate = DateTime.UtcNow.AddDays(360); 
      ctx.Response.Headers["Set-Cookie"] = "TestCookie=some_value; Path=/; Expires=" + expiryDate.ToString("ddd, dd-MMM-yyyy H:mm:ss") + " GMT; HttpOnly"; 
     } else { 
      Console.WriteLine("Cookie: " + cookie); 
     } 
     ReturnString(ctx, "OK"); 
    } 

    protected static void ReturnString(HttpListenerContext ctx, String s) { 
     try { 
      byte[] buf = Encoding.UTF8.GetBytes(s); 
      ctx.Response.ContentLength64 = buf.Length; 
      ctx.Response.OutputStream.Write(buf, 0, buf.Length); 
     } catch (Exception e) { 

     } // suppress any exceptions 
     finally { 
      // always close the stream 
      ctx.Response.OutputStream.Close(); 
     } 
    } 
} 

अब, जब 127.0.0.1:7777 एक्सेस करते समय, मैं पहली बार "कुकी स्थापना" मिलता है, और फिर "कुकी: TestCookie = some_value" बाद के सभी अनुरोधों पर। क्रोम में कुकी लगातार होती है (मैं ब्राउज़र बंद कर सकता हूं, इसे पुनरारंभ कर सकता हूं, और अभी भी "कुकी: टेस्टकुकी = some_value") प्राप्त कर सकता है, लेकिन यह इंटरनेट एक्सप्लोरर में काम नहीं करता है। यही है, आईई का उपयोग करते समय, जब भी मैं ब्राउज़र को पुनरारंभ करता हूं, मुझे पहले अनुरोध पर "सेटिंग कुकी" मिलती है। तो कुकी अब और स्पष्ट नहीं है।

यह क्यों है? क्या मुझसे कुछ गलत हो रही है? निश्चित रूप से सी # सर्वर का उपयोग कर आईई में लगातार कुकीज़ सेट करने का कोई तरीका होना चाहिए?

उत्तर

2

हम्म, मैं इस सवाल का जवाब मिल गया। यह वास्तव में काफी शर्मनाक सरल है। समाप्ति तिथि सेट करते समय, मैंने कोड

expiryDate.ToString("ddd, dd-MMM-yyyy H:mm:ss") 

का उपयोग किया लेकिन निश्चित रूप से यह तिथि का स्थानीय प्रतिनिधित्व प्रस्तुत करता है। और चूंकि मैं नॉर्वे में हूं, इसलिए "डीडीडी" ने सप्ताह के दिन को नारियल में बनाया। और निश्चित रूप से आईई उस पर पार्स करने में सक्षम नहीं था।

यह सरल परिवर्तन समस्या हल: -> "वेबपेज गोपनीयता नीति" -> क्लिक

expiryDate.ToString("ddd, dd-MMM-yyyy H:mm:ss", System.Globalization.CultureInfo.InvariantCulture) 

तो आपके सभी मुसीबत, लोगों के लिए खेद है ..

0

क्या आप अपनी साइट को आईई गुणों के भीतर विश्वसनीय क्षेत्र में जोड़ सकते हैं? ऐसा लगता है जैसे यह सुरक्षा सेटिंग्स से संबंधित हो सकता है।

+0

ठीक है, मैं "सुरक्षा" के लिए जा सकते "127.0.0.1" -> "सारांश" पर और "हमेशा इस साइट को कुकीज़ का उपयोग करने की अनुमति दें" का चयन करें। इससे समस्या हल हो जाती है, लेकिन मुझे नहीं लगता कि मुझे नियमित उपयोगकर्ताओं को ऐसा करने की आवश्यकता हो सकती है। इसलिए मैं इस काम को आईई डिफ़ॉल्ट सेटिंग्स के साथ बनाने का एक तरीका ढूंढ रहा हूं। –

+1

यह ठीक है। बस परिदृश्य स्थापित करने की कोशिश कर रहा था। यह क्यों अवरुद्ध हो सकता है, संभावित कारण यह है कि यह सोच सकता है कि कुकी एक तृतीय-पक्ष कुकी है (उदाहरण के लिए, यदि आप कुकी को 'लोकलहोस्ट' पर सेट कर रहे हैं, तो फिर नेविगेट करें 127.0.0.1), अगर इसे किसी आईफ्रेम के भीतर से सेट किया जा रहा है, या यदि कुकी में डेटा में ऐसी जानकारी है जो आईई का मानना ​​है कि आपसे संपर्क करने के लिए इस्तेमाल किया जा सकता है (जैसे ईमेल पता)। आईई के साथ, यह अक्सर पी 3 पी हेडर सहित लायक है जो आईई को बताता है कि आपकी साइट पूरी तरह से असुरक्षित नहीं है (https://en.wikipedia.org/wiki/P3P)। क्या आपने पी 3 पी की कोशिश की है? –

+0

मैंने हमेशा 127.0.0.1 का उपयोग किया है, कभी भी मेरे परिदृश्य में लोकहोस्ट नहीं। और कोई फ्रेम नहीं। डेटा बेस 64-एन्कोडेड स्ट्रिंग है, जो ईमेल पते की तरह कुछ नहीं दिखता है। मैंने पी 3 पी की कोशिश की है, लेकिन अभी तक इसे ठीक से समझने के लिए पर्याप्त समय नहीं निवेश किया है, इसलिए मूल रूप से मैंने कुछ पी 3 पी सामानों को शामिल किया है जो मुझे गुगलिंग द्वारा मिला है। –

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