繁体   English   中英

泽西岛响应HTTP 400错误请求,无提示方法

[英]Jersey response HTTP 400 Bad Requests, no clue way

我有一台NGINX服务器,然后有一台Tomcat作为Servlet容器。 我从球衣2.25.1升级到2.26,可以使它工作:

我将服务器中的Java版本从jdk1.8.0_91更新为jdk1.8.0_161。 我在REST项目中更新了依赖项:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>${jersey.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

    <!-- Jersey core Servlet 2.x implementation -->
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <scope>${dependency.scopes}</scope>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
        <scope>${dependency.scopes}</scope>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-binding</artifactId>
        <scope>${dependency.scopes}</scope>
    </dependency>

    <!-- Jersey Multipart entity providers support module -->
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <scope>${dependency.scopes}</scope>

        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.jaxrs</groupId>
                <artifactId>jackson-jaxrs-base</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.jaxrs</groupId>
                <artifactId>jackson-jaxrs-json-provider</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <scope>${dependency.scopes}</scope>

        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.jaxrs</groupId>
                <artifactId>jackson-jaxrs-base</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.jaxrs</groupId>
                <artifactId>jackson-jaxrs-json-provider</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

其中提供了dependency.scopes。 所有依赖项都放置在Tomcat的lib文件夹中。 我有一些关于依赖项的问题,但是现在我没有看到任何例外。

NGINX将HTTP重定向,而HTTPS后端流量则重定向到Tomcat。 当我请求使用HTTP时,我得到正确的响应。 当我不使用HTTPS请求时,会得到HTTP400。相同的URL,相同的请求标头,只是更改了协议。

另外,如果我从NGINX服务器使用WGET命令请求相同的URL,我将从Tomcat(使用HTTP和HTTPS)获得正确的答案。

因此,Tomcat看起来在两种协议中都可以很好地解决问题,但有时是这样。

tomcat中的任何日志中都没有任何异常。 通过NGINX请求GET时,我只是在访问日志中看到HTTP 400代码。

  HTTPS Request
  - - - [02/Apr/2018:17:02:00 +0000] "GET /request HTTP/1.0" 400 1001 71 https-jsse-nio-8542-exec-4

  HTTP Request
  - - - [02/Apr/2018:17:29:35 +0000] "GET /request HTTP/1.0" 200 45 16 https-jsse-nio-8542-exec-9

看起来问题出在HTTP标头中,但是我从tomcat端看不到它们。 是否有可能启用一些额外的日志记录以获取任何线索?

谢谢,

下图显示了tomcat中添加的依赖项:

在此处输入图片说明

我可以通过比较HTTP和HTTPS配置来解决NGINX配置中的问题。 我的HOST标头错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM