2016-06-29 2 views
0

클라이언트에서 웹 서비스로 @POST 요청을 보내는 방법을 알아 내려고 노력했습니다. 403 오류가 발생하며 이유를 알 수 없습니다. 올바른 권한을 부여하기 위해 web.xml 파일을 편집하려고 시도했지만 여전히 작동하지 않습니다. 아래는 WEB-INF web.xml과 Tomcat web.xml 파일입니다. 어떤 도움을 주시면 감사하겠습니다. 또한, 나는 Tomcat과 Jersey 모두에게 매우 익숙하므로 매우 어리석은/간단한 오류 일 수 있습니다.Tomcat은 Jersey (Jax-RS)를 사용하여 @POST 요청을 보내지 못하도록합니다.

사양

  • OS X 엘 카피 탄 10.11.2
  • 톰캣 버전 7.0 서버
  • 이클립스 JEE 케플러 R 코코아 x86_64의
  • 뉴저지 2.23.1
  • JRE 1.7
  • 이죠 내 고객 (Google 크롬 내선)
01 일이 안 23,516,

서버의 web.xml

<servlet> 
     <servlet-name>jsp</servlet-name> 
     <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
     <init-param> 
      <param-name>fork</param-name> 
      <param-value>false</param-value> 
     </init-param> 
     <init-param> 
      <param-name>xpoweredBy</param-name> 
      <param-value>false</param-value> 
     </init-param> 
     <init-param> 
      <param-name>readonly</param-name> 
      <param-value>false</param-value> 
     </init-param> 

     <load-on-startup>3</load-on-startup> 
</servlet> 

<filter> 
    <filter-name>CorsFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
    <init-param> 
     <param-name>cors.allowed.headers</param-name> 
     <param-value>Accept,Accept-Encoding,Accept-Language,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization,Connection,Content-Type,Host,Origin,Referer,Token-Id,User-Agent, X-Requested-With</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowed.origins</param-name> 
     <param-value>*</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowed.methods</param-name> 
     <param-value>GET, POST, PUT, DELETE, OPTIONS, HEAD</param-value> 
    </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>CorsFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

WEB-INF의 web.xml을

<?xml version="1.0" encoding="UTF-8"?> 
<!-- This web.xml file is not required when using Servlet 3.0 container, 
    see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html --> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.example.messenger</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <url-pattern>/webapi/*</url-pattern> 
    </servlet-mapping> 
</web-app> 
+0

403 금지되어 있습니다 .......... – SMA

+0

예, 그렇지만 나는 그것을 원하지 않습니다. 나는 그것을 고치는 법을 모르겠습니다. FWIW, CorsFilter를 추가 할 때까지는 405 오류가 발생했습니다. – user123429

답변

0

. 귀하의 오류는 어딘가에서 처리됩니다. 이러한 주석을 봐 :

@ControllerAdvice 
@ResponseStatus(HttpStatus.FORBIDDEN) 
@ExceptionHandler(YourException.class) 
+0

어디서 찾을 수 있습니까? – user123429

0

이 예 (https://wolfpaulus.com/journal/java-journal/jersey/)은 다소 변형 된 web.xml 파일이 있습니다 예제 페이지는 저자가 아니라 이클립스보다 인 IntelliJ를 사용하는 것을 제외하고 (정확한 환경을 강조 할 것으로 보인다

<display-name>Jersey Web Application</display-name> 
<servlet> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

있다. ..하지만 커뮤니티 에디션을 무료로 다운로드 할 수 있으며 Java 7보다는 Java 8을 다운로드 할 수 있습니다.) 따라서 함께 시작하여 실행하고 싶을 수도 있습니다.

관련 문제