2015-02-14 8 views
5

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

### Chrome/Firefox 
POST idp.com/login   (res 302 -> idp.com/authenticate) 
GET idp.com/authenticate (res 302 -> app.com/oauth2/callback) 
GET app.com/oauth2/callback (res 303 -> app.com/home) 
GET app.com/home 

### IE 
POST idp.com/login   (res 302 -> idp.com/authenticate) 
POST idp.com/authenticate (res 302 -> app.com/oauth2/callback) 
POST app.com/oauth2/callback (res 303 -> app.com/home) 
POST app.com/home 

आईई किसी कारण से मूल अनुरोध विधि को बनाए रखता प्रतीत होता है। मैंने कम से कम 303 लौटकर अपने सर्वर (app.com) पर मूल पोस्ट प्रतिक्रिया से तोड़ने की कोशिश की लेकिन इससे इस मुद्दे को हल नहीं किया गया। आरएफसी 2068 के बाद से कहा गया है कि एक 303 - See Other प्रतिक्रिया के लिए, निम्नलिखित सम्मानित किया जाना चाहिए

अनुरोध के जवाब पाया जा सकता है एक अलग URI में और उस संसाधन पर एक GET विधि के उपयोग पुनः प्राप्त किया जा चाहिए यह अप्रत्याशित है। यह विधि मुख्य रूप से POST- सक्रिय स्क्रिप्ट के आउटपुट को उपयोगकर्ता एजेंट को किसी चयनित संसाधन पर रीडायरेक्ट करने की अनुमति देने के लिए मौजूद है।

मैंने बिना किसी सफलता के 307 प्रतिक्रिया की भी कोशिश की। क्या किसी के पास क्या हो रहा है पर कोई विचार है?

+0

लिंकडइन में OAuth करते समय समान व्यवहार देख रहा है - आईई कॉलबैक पोस्ट कर रहा है इसे प्राप्त नहीं कर रहा है। –

+0

संबंधित प्रश्न - http://stackoverflow.com/questions/9912200/post-redirect-get-with-internet-explorer लेकिन अभी भी कोई जवाब नहीं –

उत्तर

0

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

@RequestMapping(value = ApiValues.LINKEDIN_CALLBACK, method = RequestMethod.POST) 
public void doPost(HttpServletRequest request, HttpServletResponse response, 
     @RequestParam(value = "oauth_token", required = false) String tokenString, 
     @RequestParam(value = "oauth_verifier", required = false) String verifierString) throws ServletException, IOException { 

    handleCallBack(request, response, tokenString, verifierString); 
} 


@RequestMapping(value = ApiValues.LINKEDIN_CALLBACK, method = RequestMethod.GET) 
public void doGet(HttpServletRequest request, HttpServletResponse response, 
     @RequestParam(value = "oauth_token", required = false) String tokenString, 
     @RequestParam(value = "oauth_verifier", required = false) String verifierString) throws ServletException, IOException { 

    handleCallBack(request, response, tokenString, verifierString); 
} 

प्रसिद्घ यह केवल लगता है कि आईई (और IE के पुराने संस्करणों) इस समस्या को प्रदान कर रहे हैं, क्रोम, Firefox और Safari सभी प्रति युक्ति के रूप में प्राप्त करने के लिए पुनर्निर्देशित करने के लिए लग रहे हैं।

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