2012-01-27 11 views
6

के साथ सत्र कुकी मुझे एक निश्चित साइट ब्राउज़ करनी चाहिए जो इंडी के idhttp के साथ सत्र आईडी रखती है।इंडी

मैं उन घटकों को निष्क्रिय करने के लिए निम्न कोड का उपयोग करता हूं जो मुझे चाहिए।

procedure InitSession; 
begin 
    Initalized := True; 
    try 
    ihttp := TIdHTTP.Create(nil); //the variables are declared globally 
    idCookie := TIdCookieManager.Create(nil); 
    ihttp.ConnectTimeout := 5000; 
    ihttp.AllowCookies := true; 
    ihttp.HandleRedirects := true; 
    ihttp.CookieManager := idCookie; 
    except 
    Initalized := False; 
    end; 
end; 

समस्या तब होती है जब मैं अनुरोध नहीं कर रहा हूं कि कुकी नहीं भेजी जाती है। कुकी चुड़ैल भेजने के लिए मुझे क्या करने की ज़रूरत है सत्र आईडी है। धन्यवाद

+1

आपको यह निर्दिष्ट करना होगा कि आप किस इंडी संस्करण का उपयोग कर रहे हैं, क्योंकि संस्करणों के बीच कार्यक्षमता बदल गई है (कभी-कभी नाटकीय रूप से)। इसलिए चीजें कैसे करें नाटकीय रूप से भी बदल सकते हैं। –

+1

मैं सबवर्जन या दैनिक स्नैपशॉट्स – mjn

उत्तर

6

यदि किसी कुकी को नए अनुरोधों में वापस नहीं भेजा जा रहा है, तो TIdCookieManager प्राप्त होने पर कुकी को खारिज कर दिया गया है, या स्वीकृत कुकी से नए अनुरोधों से मेल नहीं खाता है। क्या आप वास्तविक Set-Cookie प्रतिक्रिया शीर्षलेख दिखा सकते हैं जो कुकीज़ भेज रहे हैं, और यूआरएल (यू) आपको लगता है कि कुकी (ओं) को सही तरीके से वापस नहीं भेजा जा रहा है? क्या आपने कुकी को प्राप्त करने के बाद सत्यापित किया था, यह वास्तव में नया अनुरोध भेजने से पहले TIdCookieManager में समाप्त होता है?

इंडी का कौन सा संस्करण आप उपयोग कर रहे हैं? 2011 से पहले, इंडी 10 की पूर्व रिलीज ने कुकी हैंडलिंग को तोड़ दिया था जो मूल रूप से अनुपयोगी था। लेकिन 2011 की शुरुआत में, IdCookieManager.pas और IdCookie.pas स्क्रैच से पूरी तरह से लिखे गए थे, और मई 2011 के बाद से ठीक से काम कर रहे हैं और मैंने कुकी मिशंडलिंग की कोई नई रिपोर्ट नहीं देखी है।

+0

से वर्तमान इंडी संस्करण को आजमाने की सलाह देता हूं, मैं डेल्फी एक्सई 2 का उपयोग कर रहा हूं ... इसलिए जब मैं ihttp.Get() विधि का उपयोग करता हूं तो कुकी स्वचालित रूप से भेजी जानी चाहिए या मुझे इसे मैन्युअल रूप से सेट करना होगा? कुकी प्रबंधक में कुकी को ठीक से प्राप्त किया जाता है। मैं यह कैसे कर सकता हूँ? – opc0de

+0

मैंने यह कोशिश की ihttp.Request.CustomHeaders.Add ('कुकी:' + idcookie.CookieCollection.Cookies [0] .CLientCookie); लेकिन बिना सफलता के – opc0de

+0

कुकीज स्वचालित रूप से संभाले जाते हैं। फिर, सर्वर का 'सेट-कुकी' हेडर कैसा दिख रहा है जैसे कुकी प्राप्त कर रहा है? आप उस मूल्य को 'TIdHTTP.Response.RawHeaders' संपत्ति से प्राप्त कर सकते हैं। आप किस यूआरएल के बाद अनुरोध कर रहे हैं कि कुकी वापस नहीं भेज रहा है? मुझे यह जानकारी यह निर्धारित करने की आवश्यकता है कि इंडी सही तरीके से परिचालन कर रही है या फिर यह फिर से डिजाइन किए गए कुकी प्रबंधन कोड में एक बग है। –

0

क्या कुकीज़ के साथ कोई समस्या है जिसमें DOMAIN संपत्ति नहीं है? आईडीसीकी जो डीएक्सई 2 के साथ आता है उन कुकीज़ को पार्स करने में विफल रहता है जिनमें MAX-AGE संपत्ति नहीं है, क्या एक संपत्ति संपत्ति है, और आपके पास DOMAIN संपत्ति नहीं है। IdCookie.pas 675 देखें जहां एस को एक अप्रत्याशित मान लगता है (समाप्त होने वाली संपत्ति को पार करने से छोड़ दिया गया है)।

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