[Spring Boot]CORSトラブルシューティング小記録
7182 ワード
プロジェクトの進行中によくあるCross-Origin Resource Sharing、CORSエラーが発生しました.
Spring Bootは応答ヘッダに直接追加できる方法を用いて問題を解決したが,なぜかエラーが続き未知数に陥ったが,いくつかの非常に小さな修正で解決した.
まず、私がgooglingで解決した方法を簡単に紹介します.
まず、プロジェクト内の任意の場所にフィルタフォルダを作成し、CorsFilterを行います.Javaファイルを作成します.
次に、次の内容で内容を埋め、Filterをインポートするときにjavaxを使用します.servletをインポートする必要があります.
Spring Bootは応答ヘッダに直接追加できる方法を用いて問題を解決したが,なぜかエラーが続き未知数に陥ったが,いくつかの非常に小さな修正で解決した.
まず、私がgooglingで解決した方法を簡単に紹介します.
まず、プロジェクト内の任意の場所にフィルタフォルダを作成し、CorsFilterを行います.Javaファイルを作成します.
次に、次の内容で内容を埋め、Filterをインポートするときにjavaxを使用します.servletをインポートする必要があります.
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
//여기에 내가 허용하고자 하는 클라이언트의 url을 입력해 줍니다.
//주의사항 "https://myurl.com/" 처럼 마지막에 '/'를 붙이면 CORS에러가 그대로 발생하게 됩니다.
response.setHeader("Access-Control-Allow-Origin", "https://myurl.com");
//response.setHeader("Access-Control-Allow-Origin", "*"); //이렇게 해서 모든 요청에 대해서 허용할 수도 있습니다.
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods","*");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization");
if("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
}else {
chain.doFilter(req, res);
}
}
@Override
public void destroy() {
}
}
私も最初は簡単な方法@CrossOriginを使いましたが、原因は分かりませんが、CORSエラーが発生し続け、確実に実行可能な方法:上の方法を使いました.urlの最後に「/」を付けないように注意してください!さっき「/」でうろうろしていて、「/」が原因だと気づいたので書いてみました.ここまでです.Reference
この問題について([Spring Boot]CORSトラブルシューティング小記録), 我々は、より多くの情報をここで見つけました https://velog.io/@fftl/Spring-Boot-CORS-오류-해결-소소한-기록テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol