{"id":3571,"date":"2021-10-04T16:59:26","date_gmt":"2021-10-04T07:59:26","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3571"},"modified":"2021-11-16T15:22:54","modified_gmt":"2021-11-16T06:22:54","slug":"crossorigin-not-working","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3571","title":{"rendered":"@CrossOrigin not working"},"content":{"rendered":"<h1>@CrossOrigin not working<\/h1>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/36809528\/spring-boot-cors-filter-cors-preflight-channel-did-not-succeed\">\ucc38\uc870<\/a><\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/a\/40300363\/6328727\">\ucc38\uc870<\/a><\/p>\n<p>\uc65c\uc778\uc9c0 <code>@CrossOrigin<\/code> \uac00 \uc791\ub3d9\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<h2>Spring Security CORS<\/h2>\n<p><code>Spring Security<\/code> \uac00 \ud65c\uc131\ud654 \ub418\uc5b4 \uc788\uc73c\uba74,<br \/>\n<code>WebSecurityConfigurerAdapter<\/code> \uc5d0\uc11c\ub9cc <code>CORS<\/code> \ub97c \ud65c\uc131\ud654 \ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-java\">public class CorsFilter implements Filter {\n\n    @Override\n    public void init(FilterConfig filterConfig) throws ServletException {\n\n    }\n\n    @Override\n    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {\n        HttpServletResponse response = (HttpServletResponse) servletResponse;\n        HttpServletRequest request= (HttpServletRequest) servletRequest;\n\n        response.setHeader(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;);\n        response.setHeader(&quot;Access-Control-Allow-Methods&quot;, &quot;GET,POST,DELETE,PUT,OPTIONS&quot;);\n        response.setHeader(&quot;Access-Control-Allow-Headers&quot;, &quot;*&quot;);\n        response.setHeader(&quot;Access-Control-Allow-Credentials&quot;, &quot;true&quot;);\n        response.setHeader(&quot;Access-Control-Max-Age&quot;, &quot;3600&quot;);\n\n        if (&quot;OPTIONS&quot;.equals(request.getMethod())) {\n            \/\/ for CORS preflight channel\n            response.setStatus(HttpServletResponse.SC_OK);\n        } else {\n            filterChain.doFilter(request, response);\n        }\n    }\n\n    @Override\n    public void destroy() {\n\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@EnableWebSecurity\npublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {\n\n    @Bean\n    CorsFilter corsFilter() {\n        CorsFilter filter = new CorsFilter();\n        return filter;\n    }\n\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n\n        http\n                .addFilterBefore(corsFilter(), SessionManagementFilter.class)\n                .authorizeRequests().antMatchers(&quot;\/**&quot;).permitAll();\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>@CrossOrigin not working \ucc38\uc870 \ucc38\uc870 \uc65c\uc778\uc9c0 @CrossOrigin \uac00 \uc791\ub3d9\ud558\uc9c0 \uc54a\ub294\ub2e4. Spring Security CORS Spring Security \uac00 \ud65c\uc131\ud654 \ub418\uc5b4 \uc788\uc73c\uba74, WebSecurityConfigurerAdapter \uc5d0\uc11c\ub9cc CORS \ub97c \ud65c\uc131\ud654 \ud560 \uc218 \uc788\ub2e4. public class CorsFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3571\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-3571","post","type-post","status-publish","format-standard","hentry","category-spring-boot-2-5"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3571"}],"version-history":[{"count":5,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3571\/revisions"}],"predecessor-version":[{"id":3862,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3571\/revisions\/3862"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}