2010-12-17 29 views
7

मैं एक फेसबुक ऐप devloping हूँ। जाहिर है, ऐप अधिकांश ब्राउज़रों पर ठीक काम करता है (मैंने इसे एफएफ, क्रोम और सफारी पर परीक्षण किया और यह उन सभी पर ठीक काम किया)। लेकिन जब मैं IE8 पर परीक्षण किया, मैं जब पृष्ठों में से एक के लिए एक ajax कॉल करने के लिए कोशिश कर रहा है यह त्रुटि संदेश प्राप्त:फेसबुक ऐप सभी ब्राउज़रों पर काम करता है लेकिन IE8

protected function _restserver($params) { 
    // generic application level parameters 
    $params['api_key'] = $this->getAppId(); 
    $params['format'] = 'json-strings'; 

    $result = json_decode($this->_oauthRequest(
    $this->getApiUrl($params['method']), 
    $params 
), true); 

    // results are returned, errors are thrown 
    if (is_array($result) && isset($result['error_code'])) { 
    throw new FacebookApiException($result); 
    } 
    return $result; 
} 

:

Fatal error: Uncaught Exception: 102: Requires user session thrown in 
/home1/website/public_html/facebook/src/facebook.php on line 515 

इस समारोह से facebook.php में लाइन 515 शामिल है मेरा अनुमान है कि यह सत्रों या आईई 8 सेटिंग्स के साथ कुछ करने के लिए है, लेकिन मुझे यकीन नहीं है कि इस समस्या को कैसे ठीक किया जाए।

उत्तर

22

अपने php फ़ाइल के शीर्ष पर इस शीर्ष लेख जोड़ने का प्रयास करें:

<?php 
    header('p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"'); 
?> 

यह क्रॉस-डोमेन कर देगा AJAX IE में काम कॉल

संपादित करें:

वास्तव में लंबे समय के सही जवाब निम्न है:

एक IFrame कैनवास ऐप विकसित करते समय (या किसी भिन्न पृष्ठ से होस्ट किए गए किसी भी अन्य आइफ्रेम ent डोमेन) कुकीज़ (तृतीय पक्ष कुकीज़ के रूप में जाना जाता है) तक पहुंच कुछ स्थितियों (डिफ़ॉल्ट आईई कॉन्फ़िगरेशन) के तहत प्रतिबंधित हैं। फ़ायरफ़ॉक्स, क्रोम, सफारी, ओपेरा सभी काम के रूप में काम करते हैं लेकिन आईई ब्लॉक इस कुकीज़ तक पहुंच। इस हेडर की उपस्थिति (जिसे P3P Compact Privacy Policy कहा जाता है) आईई को अलग डोमेन से कुकीज़ स्वीकार करने के लिए तैयार करेगा।

और यह आपके सत्र कोड को कैसे काम करता है ???

सर्वर में सत्र जानकारी को ठीक करने के लिए, पृष्ठ क्लाइंट में संग्रहीत सत्र कुकी जारी करता है। यदि आपका आईफ्रेम सत्र का उपयोग करता है तो ब्राउजर द्वारा कुकी को स्टोर करने की अनुमति दी जानी चाहिए।

कुकी स्टोर करने के लिए गिरने का मतलब है कि सत्र खो जाएगा और आपका सत्र-आधारित कोड आपके जैसे पोस्ट होने में विफल हो जाएगा।

उम्मीद है कि इससे मदद मिलती है।

पीएस: बीटीडब्ल्यू मुझे नहीं पता कि पी 3 पी हेडर में सभी अजीब शब्दकोष क्या हैं। मैंने इसे काम करने के कई बदलावों को देखा है, इसलिए आपको

+2

वाह। यह निश्चित रूप से एक जादुई रेखा है। यह पूरी तरह से काम करता है (हालांकि मुझे अजाक्स संदेश को रीफ्रेश करने के लिए IE8 को बंद करना और खोलना था)। यह लाइन क्या करती है? – khr2003

+0

मैं यह बताने के लिए अपना उत्तर संपादित करूंगा कि यह –

+2

आपके स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। मैंने कुछ शोध किया और यहां वह लिंक है जो अजीब शब्दकोष बताता है: http://www.p3pwriter.com/LRN_111.asp – khr2003

0

यदि आप Microsoft .NET प्लेटफॉर्म पर चल रहे हैं, तो आप आईआईएस में पी 3 पी हेडर सेट कर सकते हैं।

निम्न लिंक देखें, लेकिन आप नीति एक्सएमएल फ़ाइल रखने के बारे में बकवास छोड़ सकते हैं और हेडर जोड़ने के लिए सीधे कटौती कर सकते हैं!

http://support.microsoft.com/kb/324013

+0

मैं लोगों को यह सोचने के खिलाफ सावधानी बरतना चाहूंगा कि एक पी 3 पी हेडर जोड़ना सभी कुकी मुद्दों को हल करेगा।यह आईई में एक आम परिदृश्य के आसपास काम करेगा, लेकिन यदि तृतीय-पक्ष कुकीज़ स्पष्ट रूप से अक्षम हैं (या तो ब्राउज़र सुरक्षा सेटिंग्स या एड-ऑन कुकी प्रबंधक द्वारा) तो पी 3 पी हेडर की उपस्थिति से कोई फर्क नहीं पड़ता। एक आईफ्रेम ऐप में कुकीज़ का उपयोग करके, आप हमेशा यहां कुछ और उपयोगकर्ताओं को खोने जा रहे हैं। उम्मीद है कि बहुत से नहीं, लेकिन हमेशा कुछ। यदि यह अस्वीकार्य है, कुकीज़ का उपयोग न करें। –

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