CORS 크로스 도메인 이슈 (No 'Access-Control-Allow-Origin' header is present on the requested resource)


Error 상황

브라우져 console 'Access-Control-Allow-Origin' 문제 발생


나의 경우는 내가 만든 다른 api spring project를 ajax로 받아와 사용하려 하는데 크로스 도메인 이슈가 발생하여 api spring project에 크로스 도메인 문제를 해결하고자 spring 설정을 하게 되었다.


1. 크로스 도메인 설정 Java File 만들기


package egovframework.rte.tex.cros;


import java.io.IOException;


import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletResponse;





public class SimpleCORSFilter  implements Filter {

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletResponse response = (HttpServletResponse) res;


        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");

        response.setHeader("Access-Control-Max-Age", "3600");

        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");

        

        response.setHeader("Access-Control-Allow-Origin", "*");  /*여기의 *을 내가 허용하고 싶은 특정 도메인으로 바꾸면 설정한 도메인에 한에서만 크로스 도메인을 허용하게된다. 여러 도메인의 경우 여러번 설정하면된다. */

     


        chain.doFilter(req, res);

    }

    public void init(FilterConfig filterConfig) {}

    public void destroy() {}



}


2. web.xml 필터 설정


<filter>

   <filter-name>cors</filter-name>

   <filter-class>egovframework.rte.tex.cros.SimpleCORSFilter</filter-class>   <-- 1번에서 만든 class 위치

</filter>

<filter-mapping>

   <filter-name>cors</filter-name>

   <url-pattern>/*</url-pattern> <-- 전체도메인 해당 (크로스 도메인을 적용하고 싶은 url pattern)

</filter-mapping>


'Java > Spring' 카테고리의 다른 글

Spring 소개  (0) 2017.09.06

1. MySQL stop

#service mysqld stop


2. MySQL_safe 실행

mysql에서 root 패스워드 없이 접근하기 위해서


#/usr/bin/mysqld_safe --skip-grant &

#/usr/bin/mysqld_safe --skip-grant-tables &

실행하다 커서가 #으로 돌아오지 않을 시  Ctrl + c로 돌아온다.


3. MySQL 패스워드 없이 접근

#/usr/bin/mysql -u root mysql


MySQL 5.7 version 미만 

SQL> UPDATE mysql.user SET password=PASSWORD('변경 할 패스워드') WHERE user='root';

SQL> FLUSH PRIVILEGES; 


MySQL 5.7 version 이상

SQL> UPDATE mysql.user SET authentication_string=PASSWORD('변경 할 패스워드') WHERE user='root'; 

SQL> FLUSH PRIVILEGES;


4. MySQL 재시작

#service mysqld start


5. MySQL

#mysql -u root -p

Enter password :          <--- 변경된 패스워드 입력



'Linux > MYSQL' 카테고리의 다른 글

[Linux][Centos]에서 MySQL 버전 확인하기  (0) 2017.09.06

+ Recent posts