java - Tomcat 不允许我使用 Jersey (Jax-RS) 发送@POST 请求

标签 java eclipse web-services http tomcat

我一直在尝试(现在大约一天)弄清楚如何从我的客户端向我的 Web 服务发送 @POST 请求,但我收到 403 错误,我不知道为什么。我已尝试编辑我的 web.xml 文件以允许正确的授权,但它仍然无法正常工作。下面是我的 WEB-INF web.xml 和 Tomcat web.xml 文件。任何帮助将不胜感激,这令人沮丧。另外,我对 Tomcat 和 Jersey 都很陌生,所以这很可能是一个非常愚蠢/简单的错误。

规范

  • OS X El Capitan 10.11.2
  • Tomcat 7.0 版服务器
  • Eclipse JEE Kepler R Cocoa x86_64
  • Jersey 2.23.1
  • JRE 1.7
  • postman 作为我的客户(Google chrome ext)

服务器 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>

最佳答案

这不应该发生。您的错误已在某处处理。看看这些注释:

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

关于java - Tomcat 不允许我使用 Jersey (Jax-RS) 发送@POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38107240/

相关文章:

java - GWT、GWT Designer 和 Eclipse 插件问题

java - 多部分文件到文件 InputStream

javascript - 我无法使用 Javascript (Ajax) 从 PHP 获得回复。虽然我能够在 PHP 页面上显示结果,但我希望将其返回到 HTML 页面上

php - 实现 Web 服务登录的最佳方式是什么?

java - System.getProperty ("java.class.path") 和 getClassLoader.getURLs() 有什么区别?

java - 在 Java 中使用临时 keystore 的 2 种 SSL 方式

java - 为什么这个类直接运行时可见,但从其他类调用时,它是空的并且无法关闭

javascript - $.ajax 不调用 ASP.Net 中的 WebService

java - 如何在单个 Swing 应用程序中拥有多种外观和感觉

java - 使用VLCJ计算媒体文件的比特率