๋ฐ์ํ
CorsFilterkmi.hc.hops.api.config.CorsFilterCorsFilter/*
Vue + ์คํ๋ง(๋ถํธ์๋)์ผ๋ก ๊ฐ๋ฐ ํ ์คํธ ์ค์ธ๋ฐ, cors ์๋ฌ๋ก ํต์ ์ด ์๋๊ณ ์์๋ค.
Access to XMLHttpRequest at 'http://127.0.0.1:8081/user/login' from origin 'http://localhost:9000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
๊ฐ๋ฐ ํ๊ฒฝ์ด์ง๋ง, ํ๋ก ํธ๋จ์์ cors ์ฒ๋ฆฌํ๋๊ฑด, ์์ ๋ฐฉํธ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฑ์๋์์ ์ฒ๋ฆฌํด์ฃผ๊ธฐ๋ก ํ๋ค.
1. web.xml์ filter ์ถ๊ฐ
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>test.api.config.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern> <!-- ๋ชจ๋ URL์ ๋ํด ํํฐ ์ ์ฉ -->
</filter-mapping>
2. filter ์ถ๊ฐ
package test.api.config;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class CorsFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// ์ด๊ธฐํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์์ฑ
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
// CORS ํค๋ ์ถ๊ฐ
res.setHeader("Access-Control-Allow-Origin", "http://localhost:9000"); // ํ์ฉํ ๋๋ฉ์ธ
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); // ํ์ฉํ HTTP ๋ฉ์๋
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"); // ํ์ฉํ ์์ฒญ ํค๋
res.setHeader("Access-Control-Allow-Credentials", "true"); // ์ธ์ฆ ์ ๋ณด ํ์ฉ
// ํํฐ ์ฒด์ธ์ ํตํด ๋ค์ ํํฐ๋ก ์ด๋
chain.doFilter(request, response);
}
@Override
public void destroy() {
// ์ข
๋ฃ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์์ฑ
}
}
์ด ๋ถ๋ถ์ด ํต์ฌ์ธ๋ฐ,
// CORS ํค๋ ์ถ๊ฐ
res.setHeader("Access-Control-Allow-Origin", "http://localhost:9000"); // ํ์ฉํ ๋๋ฉ์ธ
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); // ํ์ฉํ HTTP ๋ฉ์๋
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"); // ํ์ฉํ ์์ฒญ ํค๋
res.setHeader("Access-Control-Allow-Credentials", "true"); // ์ธ์ฆ ์ ๋ณด ํ์ฉ
ํ์ฉํ ๋๋ฉ์ธ, ๊ทธ๋ฆฌ๊ณ methos๋ค์ ์์ฑํด์ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
๋ฐ์ํ