2011-10-29 19 views
5

में विफल रहता है मेरे पास Django का उपयोग कर एक फेसबुक एप्लिकेशन है। मेरे विचारों में से एक में मैं उपयोगकर्ता को लॉग-इन करने के लिए कोड के निम्नलिखित भाग का उपयोग करता हूं।Django-HttpRedirect इंटरनेट एक्सप्लोरर

आईई में, वापसी करें HttpResponseRedirect लाइन त्रुटि संदेश के साथ विफल हो जाती है "यह सामग्री फ्रेम में प्रदर्शित नहीं की जा सकती ...", हालांकि अन्य ब्राउज़र ठीक काम कर रहे हैं।

क्या आपके पास कोई विचार है, क्यों IE HttpResponseRedirect के लिए विफल रहता है? (यह समस्या विंडोज 7 पर IE9 पर उत्पादन किया जाता है है, सर्वर Django-1.3 उपयोग कर रहा है)

def auto_login(request): 
    username = request.GET['username'] 
    password = request.GET['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
      if user.is_active: 
     login(request, user) 
     theURL='http://apps.facebook.com/myapp/' 
     return HttpResponseRedirect(theURL) 
      else: 
      return HttpResponse("disabled account") 
    else: 
     return HttpResponse("Invalid login") 
+0

किसी भी मदद की? मैं अभी भी समस्या का पता नहीं लगा सका। – user884624

उत्तर

1

यह दो बातें, दोनों ब्राउज़र सुरक्षा मॉडल से संबंधित हो सकता है।

विकल्प 1 किसी अन्य डोमेन पर रीडायरेक्ट है। ग्राहक रीडायरेक्ट का पालन करने, या इनकार करने का निर्णय ले सकते हैं। विशेष रूप से एक HTTP 307 रीडायरेक्ट (जो पोस्ट डेटा को अग्रेषित करने की अनुमति देता है) हमेशा ग्राहकों द्वारा स्वीकार नहीं किया जाता है।

विकल्प 2 विधि विधि के साथ किसी अन्य संसाधन में HTTP विधि POST url के साथ संसाधन के पुनर्निर्देशन से संबंधित है।

यदि वर्तमान दृश्य और रीडायरेक्ट की HTTP विधि अलग-अलग हैं (यानी फेसबुक/myapp के HTTP यूआरएल बनाम HTTP लॉगिन के खिलाफ HTTP पोस्ट), कम से कम IE8 रीडायरेक्ट करने से इंकार कर देगा। मुझे यकीन नहीं है कि यह आईई 9 में बदल दिया गया है।

कुछ ऐसी चीजें हैं जिन्हें आप आजमा सकते हैं।

  • आप एक और HTTP प्रतिक्रिया कोड आज़मा सकते हैं। मान लें कि HTTP पैरामीटर को रीडायरेक्ट अनुरोध पर मूल अनुरोध से अग्रेषित करने की कोई आवश्यकता नहीं है, प्रतिक्रिया कोड 303 307 से बेहतर होगा।
  • यदि आपकी स्थिति में बाहरी HTTP GET संसाधन को HTTP POST संसाधन का रीडायरेक्ट शामिल है फेसबुक पर, एक और प्रयास मध्य में एक अतिरिक्त रीडायरेक्ट डाल दिया जाता है: yoursite.com पर POST संसाधन -> yoursite.com पर संसाधन प्राप्त करने के लिए रीडायरेक्ट करें -> फेसबुक डोमेन पर बाहरी रीडायरेक्ट।
  • "अतिरिक्त रीडायरेक्ट" विकल्प एक ब्राउज़र को ठीक कर सकता है लेकिन एक और तोड़ सकता है (ब्राउज़र में रीडायरेक्ट पर सीमाएं होती हैं, जो प्रति ब्राउज़र प्रकार और संस्करण में भिन्न हो सकती हैं)। यदि आप इस स्थिति में शामिल होंगे तो आपको उपयोगकर्ता-एजेंट का पता लगाने और आईई और अन्य ब्राउज़रों के बीच स्विच करने की आवश्यकता हो सकती है।

कुछ अच्छे लिंक:

Django/IE8 Admin Interface Weirdness

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

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