반응형

ajax에서 외부서버에 접속하려 할 경우에 아래와 같은 메세지를 볼 수가 있다.

XMLHttpRequest cannot load http://xx.xx.xx.xx/xxx.jsp. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.


이는 ajax에서는 내부적으로 같은 도메인의 서버에서만 URL접속을 할 수 있도록 되어 있어서 그런데 이를 해결하기 위해서는 접속하려는 웹서버(여기서는 톰캣)에서 아래와 같이 응답헤더를 설정을 해 주면,

다른 서버에서 접속요청하는 ajax 요청을 처리할 수 있다.


response.addHeader("Access-Control-Allow-Origin", "*");

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


좀더 자세히 말하면,

우선 Filter를 상속받은 클래스를 하나 정의해서 거기에 위의 코드를 넣는다.

CrossDomainFilter.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package util.filter;
 
public class CrossDomainFilter implements Filter {
 
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse servletResponse,
            FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        if (!(request instanceof HttpServletRequest)) {
            throw new ServletException("This filter can "
                    + " only process HttpServletRequest requests");
        }
 
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.addHeader("Access-Control-Allow-Origin""*");
        response.setHeader("Access-Control-Allow-Headers""origin, x-requested-with, content-type, accept");
        chain.doFilter(request, response);
    }
 
    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
}
cs



그리고, web.xml 에 위의 필터를 추가


web.xml

1
2
3
4
5
6
7
8
<filter>
    <filter-name>CrossDomainFilter</filter-name>
    <filter-class>util.filter.CrossDomainFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CrossDomainFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
cs





반응형

'IT > 언어' 카테고리의 다른 글

BSON 이해하기  (0) 2014.05.14
텍스트 파일 입출력 Example  (0) 2014.01.27
log4j 에서 ibatis 쿼리 로그 남기는 방법  (0) 2013.11.26
spring 강좌 (2)  (0) 2013.11.26
DAO, JavaBean, 리펙토링  (0) 2013.11.26

+ Recent posts