2013-04-18 10 views
6

मुझे जर्सी आधारित आरईएसटी सर्वर में CORS समर्थन लागू करने की आवश्यकता है। मैं कुछ उपलब्ध material और सूचनात्मक tutorials से गुजर चुका हूं। मैंने पाया दो दृष्टिकोण लोग प्रयोग कर रहे हैं:सीओआरएस जावा सर्वर साइड कार्यान्वयन

दृष्टिकोण-1:

सरल और सीधा रास्ता है, जहां एक HTTP फिल्टर जो जवाबी कार्रवाई के लिए CORS हैडर कहते हैं (जर्सी विशिष्ट)

public class ResponseCorsFilter implements ContainerResponseFilter { 

public ContainerResponse filter(ContainerRequest req, ContainerResponse contResp) { 

     ResponseBuilder resp = Response.fromResponse(contResp.getResponse()); 
     resp.header("Access-Control-Allow-Origin", "*") 
       .header("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); 

     String reqHead = req.getHeaderValue("Access-Control-Request-Headers"); 

     if(null != reqHead && !reqHead.equals(null)){ 
      resp.header("Access-Control-Allow-Headers", reqHead); 
     } 

     contResp.setResponse(resp.build()); 
      return contResp; 
    } 
} 

लागू दृष्टिकोण -2:

पूरी तरह कार्यान्वित CORS इसके विनिर्देश के अनुसार यानी प्रीफलाइट अनुरोध हैंडलिंग और सभी हेडर समर्थन। ऐसे एक ओपन-सोर्स जावा कार्यान्वयन का निरीक्षण स्रोत कोड cors-filter

मेरा प्रश्न यह है कि कौन सा दृष्टिकोण लिया जाना चाहिए? दृष्टिकोण -1 बनाम दृष्टिकोण -2 के नकारात्मक पक्ष क्या हो सकता है?

मेरा उपयोग केस सभी मूल/विधियों की अनुमति दी जा सकती है और Authorization HTTP शीर्षलेख सभी REST अनुरोधों का हिस्सा होगा। मैं दृष्टिकोण -1 की ओर झुका हुआ हूं क्योंकि ऐसा लगता है कि अधिकांश डिफ़ॉल्ट सीओआरएस सेटिंग्स मेरे उपयोग के मामले में पर्याप्त होंगी, लेकिन यह सुनिश्चित नहीं है कि सर्वर पक्ष में लागू पूर्ण कॉरस चश्मा नहीं होने पर कोई भी समस्या उत्पन्न होगी।

उत्तर

1

अपने उद्देश्यों के लिए, दृष्टिकोण # 1 पर्याप्त लगता है। दृष्टिकोण # 2 उस मामले के लिए अधिक है जहां आपके पास अनुरोध प्रकार के आधार पर अलग-अलग प्रतिक्रियाएं हैं, या आप अनुरोध जानकारी को सत्यापित करना चाहते हैं। यदि आपकी प्रतिक्रिया सभी अनुरोध प्रकारों में समान है, तो # 1 ठीक होना चाहिए। ध्यान दें कि चूंकि आपका कार्यान्वयन मूल रूप से सभी अनुरोधों को सफल होने की इजाजत देता है, इसलिए यह सुनिश्चित करने के लिए कि आप अनुरोध मान्य हैं, आपको अपने स्वयं के चेक करना चाहिए। चूंकि आप प्राधिकरण शीर्षलेख की अनुमति दे रहे हैं, मुझे लगता है कि आप इसके बारे में जानते हैं, और प्राधिकरण टोकन को मान्य कर रहे हैं?

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, हाँ प्रत्येक अनुरोध प्राधिकरण हैडर प्राप्त करने पर जो सर्वर किसी भी प्रसंस्करण करने से पहले की पुष्टि करता है में संग्रहीत एक सार्वजनिक टोकन के साथ टैग किया जाता है। – harsh

0

प्ले फ्रेमवर्क में समस्या रखने वालों के लिए यहां एक समाधान है, अधिकांश टेक्स्ट पुर्तगाली में है लेकिन आप Google अनुवादक का उपयोग कर सकते हैं।

समाधान समान है।

http://www.igorcosta.com/habilitando-cors-no-play-framework-2-3-x/

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