[SPRING] 웹 서비스에 Access-Control-Origin 허용
SPRING웹 서비스에 Access-Control-Origin 허용
나는 같은 webservice가 :
@Controller
@RequestMapping("/")
public class ApplicationController {
@RequestMapping(value="/Changes", method = RequestMethod.GET)
public String inspect(ModelMap model) {
model.addAttribute("msg", "example");
return "index";
}
}
링크 : "localhost : 8081 / ChangesPDF / Changes? ..."
링크에있는 Alfresco를 통해이 웹 서비스의 응답을 얻으려고합니다. "localhost : 8080 / share". 나는 지금 다른 포트를 가지고있다. (같은 포트를 가지고있을 때, 이것은 훌륭하게 작동한다.) 그래서 다른 포트에서 Alfresco에서 에러를 얻는다.
이 헤더를 어떻게 추가 할 수 있습니까?
해결법
-
==============================
1."Access-Control-Allow-Origin"이 도메인 "localhost : 8081"(* 모두)을 허용하도록 설정하는 필터를 추가해야합니다.
"Access-Control-Allow-Origin"이 도메인 "localhost : 8081"(* 모두)을 허용하도록 설정하는 필터를 추가해야합니다.
아마 당신은 여기에 답변을 찾을 것입니다 cores-filter-not-working
추가 설명 :
먼저 필터 클래스 만들기
public class CorsFilter implements Filter { private static final Logger log = Logger.getAnonymousLogger(); @Override public void init(FilterConfig filterConfig) throws ServletException {} @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest) servletRequest; // can be moved to properties String[] allowDomain = {"localhost:8080","localhost:8081"}; String originHeader = request.getHeader("host"); for(String domian : allowDomain){ if(originHeader.endsWith(domian)) response.setHeader("Access-Control-Allow-Origin", originHeader); break; } filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() {} }
web.xml 클래스에 매핑 추가
<filter> <filter-name>cors</filter-name> <filter-class>full name of your filter class here</filter-class> </filter> <filter-mapping> <filter-name>cors</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
요구 사항에 따라 web.xml config에 URL pattren을 올바르게 정의해야합니다.
-
==============================
2.Spring 4.2 이상을 사용하는 경우 @CrossOrigin 주석을 사용할 수 있습니다.
Spring 4.2 이상을 사용하는 경우 @CrossOrigin 주석을 사용할 수 있습니다.
@Controller @RequestMapping("/") public class ApplicationController { @CrossOrigin @RequestMapping(value="/Changes", method = RequestMethod.GET) public String inspect(ModelMap model) { model.addAttribute("msg", "example"); return "index"; } }
그렇지 않으면 Spring 애플리케이션에 CORS 필터를 등록해야합니다. 이 같은.
-
==============================
3.귀하의 코드는 Spring의 @CrossOrigin 주석을 사용해야 할 수도 있습니다 (예 :
귀하의 코드는 Spring의 @CrossOrigin 주석을 사용해야 할 수도 있습니다 (예 :
import org.springframework.web.bind.annotation.CrossOrigin; .... @Controller @RequestMapping("/") public class ApplicationController { @CrossOrigin @RequestMapping(value="/Changes", method = RequestMethod.GET) public String inspect(ModelMap model) { model.addAttribute("msg", "example"); return "index"; } }
이렇게하면 모든 원산지가 허용되며 이는 귀하의 필요에 부응 할 수도 충분하지 않을 수도 있습니다.
참고로, 나는이 기사에서 설명한 내용을 발견했으며 Spring 블로그에서 언급했다.
희망이 도움이!
from https://stackoverflow.com/questions/35672679/add-access-control-allow-origin-to-web-service by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 유레카 서버가 갱신 횟수가 임계 값보다 낮음을 보여줍니다. (0) | 2019.05.04 |
---|---|
[SPRING] 스프링 MVC에서 브라우저 백 버튼 처리 방법 (0) | 2019.05.04 |
[SPRING] Java - SpringMVC - 컨트롤러에서 매개 변수 가져 오기 (0) | 2019.05.04 |
[SPRING] Spring Rest 웹 서비스에서 돌아 오는 json 응답을 필터링하는 방법 (0) | 2019.05.04 |
[SPRING] Junit / Fongo : NotNull 확인을위한 단위 테스트에서 Fongo를 사용하는 방법 (0) | 2019.05.04 |