[ad_1]
मैंने अपनी स्वयं की ऐप सेवा में कोणीय परियोजना को तैनात किया है और अपनी स्वयं की ऐप सेवा में स्प्रिंग बूट भी तैनात किया है, दोनों एप्लिकेशन स्थानीय रूप से ठीक काम करते हैं लेकिन समस्या उत्पादन पर आती है मुझे यह त्रुटि मिलती है “क्रॉस-ओरिजिनल अनुरोध अवरुद्ध: समान मूल नीति पढ़ने की अनुमति नहीं देती है https://minralsportal-api.azurewebsites.us/auth_api/authenticate पर दूरस्थ संसाधन। (कारण: CORS हेडर ‘Access-Control-Allow-Origin’ गायब है)। स्थिति कोड: 503” मुझे नहीं पता कि त्रुटि कहां आती है चूंकि मैंने स्प्रिंग बूट में संसाधन साझाकरण और कॉर्सफ़िल्टर क्लास को सक्षम करने के लिए क्रॉस-ओरिजिन क्लास को कॉन्फ़िगर किया है, लेकिन मुझे एज़्योर (उत्पादन) पर यह त्रुटि मिल रही है, भले ही यह स्थानीय रूप से पूरी तरह से ठीक काम करता है।
मैंने क्या प्रयास किया है:
यहाँ मेरी corsConfig क्लास है
@Configuration public class CorsConfig { @Bean public WebMvcConfigurer corsConfigurer(){ return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE") .allowedOrigins("*") .allowedHeaders("*"); } }; } }
यहाँ मेरी corsFilter क्लास है
@Component public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); response.setHeader("Access-Control-Expose-Headers", "Location"); chain.doFilter(req, res); } @Override public void init(FilterConfig filterConfig) {} @Override public void destroy() {} }
यहाँ मेरी सुरक्षा कॉन्फिग क्लास है
@Configuration @EnableWebSecurity @SuppressWarnings("deprecation") public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private CustomUserService userService; @Autowired private RequestFilter requestFilter; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userService); } @Bean @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Override protected void configure(HttpSecurity http) throws Exception { http.cors().disable(); http.csrf().disable(); http.authorizeRequests().antMatchers("/auth_api/authenticate").permitAll().anyRequest().authenticated() .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); http.addFilterBefore(requestFilter, UsernamePasswordAuthenticationFilter.class); } }
बहुत सारी गूगलिंग के बाद भी मुझे वह सर्वोत्तम उत्तर नहीं मिल सका जो समस्या को हल करने में मेरी मदद कर सके, किसी भी सुझाव की मैं सराहना करूंगा।
और क्या एज़्योर में कोई ऐसा साधन है जिससे मैं दोनों एप्लिकेशन को एक ही जार फ़ाइल पर पैकेजिंग किए बिना एक ही ऐप सेवा (कोणीय + स्प्रिंग बूट) पर चलाने के लिए तैनात कर सकूं?
समाधान 1
समस्या आपके कोड में नहीं है, बल्कि समस्या आपकी तैनाती में है। आपने कहा है कि आपने अपना एप्लिकेशन Azure पर तैनात किया है, और यह अपेक्षाओं का अपना सेट लाता है। मूलतः, CORS अनुरोध को Azure द्वारा अवरुद्ध किया जा रहा है, आपके एप्लिकेशन द्वारा नहीं। आपको स्वयं CORS क्षमता का प्रबंधन करना होगा – दस्तावेज़ पर एक नज़र डालें यहाँ[^] यह समझने के लिए कि आप Azure में CORS को कैसे प्रबंधित कर सकते हैं।
[Edit – I posted this response without seeing that this was an old question. The answer still stands though, and could be useful to others in the future.]
[ad_2]
コメント