2015-08-21 9 views
6

काम नहीं कर रहा है मैं एक डोमेन के लिए क्रॉस मूल अनुरोधों को अनुमति देना चाहता हूं। मेरी परियोजना वसंत का उपयोग करती है इसलिए मैं नए सीओआरएस समर्थन का लाभ लेना चाहता हूं।स्प्रिंग कॉर्स नियंत्रक एनोटेशन

मैं सभी springframework निर्भरताओं के लिए संस्करण 4.2.0 का उपयोग कर रहा हूं।

मैंने उदाहरण का पालन किया https://spring.io/blog/2015/06/08/cors-support-in-spring-framework#disqus_thread और पहले संस्करण की कोशिश की। मेरे नियंत्रक एनोटेशन लगता है:

@CrossOrigin(origins = "http://fiddle.jshell.net/", maxAge = 3600) 
@Controller 
@RequestMapping("/rest") 
public class MyController 

अगर मैं सही ढंग से समझ में आ MVC-config एक विकल्प विधि है। मैं यह रूप में अच्छी तरह करने की कोशिश की:

<mvc:cors> 
    <mvc:mapping path="/**" 
     allowed-origins="http://fiddle.jshell.net/, http://domain2.com" 
     allowed-methods="GET, PUT" 
     allowed-headers="header1, header2, header3" 
     exposed-headers="header1, header2" allow-credentials="false" 
     max-age="123" />  
</mvc:cors> 

या तो तरीकों के साथ, प्रतिक्रिया Access-Control-Allow-Origin ऐसा कुछ शामिल करने के लिए प्रतीत नहीं होता, न तो मैं jsfiddle से एक सरल प्रश्न के माध्यम से वापस एक परिणाम प्राप्त कर सकते हैं।

क्रोम डेवलपर टूल से हेडर जानकारी, जब स्थानीयहोस्ट से भागकर और एक्सेस किया गया है, नीचे है। इस मामले में अनुरोध एक ही डोमेन से है, न कि जावास्क्रिप्ट के माध्यम से, लेकिन मैंने सोचा कि सीओआरएस एनोटेशन एक्सेस कंट्रोल पैरामीटर को वैसे भी जोड़ देगा?

प्रतिक्रिया हेडर:

Content-Length:174869 
Content-Type:text/html;charset=UTF-8 
Date:Fri, 21 Aug 2015 12:21:09 GMT 
Server:Apache-Coyote/1.1 

अनुरोध हेडर:

 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*\/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8,ro;q=0.6,de;q=0.4,fr;q=0.2 
Cache-Control:no-cache 
Connection:keep-alive 
Cookie:JSESSIONID=831EBC138D2B7E176DF4945ADA05CAC1;_ga=GA1.1.1046500342.1404228238; undefined=0 
Host:localhost:8080 
Pragma:no-cache 
Upgrade-Insecure-Requests:1 
User-Agent:Mozilla/5.0(Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36 

मैं वसंत बूट का उपयोग नहीं करते और मुझे लगता है मैं एक विन्यास कदम याद किया।

+0

मैंने 'नियंत्रक 'के बजाय' @ RestController' का उपयोग करने का भी प्रयास किया लेकिन यह हेडर को कोई फर्क नहीं पड़ता। – ilinca

+0

क्या आपने किसी अन्य डोमेन से प्रयास किया है? अगर अनुरोध क्रॉस मूल नहीं है, तो मुझे नहीं लगता कि सर्वर को –

+0

प्रतिक्रिया में कोरस हेडर क्यों जोड़ना चाहिए, क्या आप इसे किसी भी तरह हल करने में सक्षम हैं? मुझे भी यही समस्या हो रही है। –

उत्तर

0

क्या आप "http://fiddle.jshell.net/" के बजाय "http://fiddle.jshell.net" के साथ प्रयास कर सकते हैं?

+0

का उपयोग करने के सुझाव के साथ मैंने अभी कोशिश की और अभी भी शीर्षलेख में CORS सामान नहीं देखते हैं। बस रिकॉर्ड के लिए, मैंने ब्राउज़र से jsfiddle और सादा दोनों का परीक्षण किया। – ilinca

+0

क्या आप एक साधारण परियोजना प्रदान कर सकते हैं जो इस समस्या को पुन: उत्पन्न करता है, और मैं एक नज़र रखूंगा। –

2

मैंने इस समस्या को अपने लिए पुन: उत्पन्न किया है। समस्या तब होती है जब मेरे पास @ @ कॉन्फ़िगरेशन एनोटेटेड क्लास में @EnableWebMvc एनोटेशन नहीं है। मैंने इस समस्या को स्पिंग जिरा में एक बग के रूप में रिपोर्ट किया है जिसमें इसके पीछे विवरण हैं: https://jira.spring.io/browse/SPR-13857

मैं कोड या दस्तावेज़ीकरण में फिक्स को देखता हूं। डॉक्यूमेंटेशन फिक्स @CrossOrigin क्लास जावाडोक में बताना होगा कि @EnableWebMvc की आवश्यकता है, लेकिन मैं कोड में फिक्स पसंद करूंगा ताकि कॉर्स एनोटेशन @EnableWebMvc के बिना काम करे।

+1

मैंने @EnableWebMvc का उपयोग करके कोशिश की है लेकिन अभी भी काम नहीं कर रहा है :( –

+0

मेरी कॉन्फ़िगरेशन तब तक काम नहीं करता जब तक कि मैं EnableWebMvc एनोटेशन नहीं जोड़ता ... –

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