ERR_INVALID_CHUNKED_ENCODING 200台机器

ERR_INVALID_CHUNKED_ENCODING 200 machine

我想使用 spring 引导和 ajax 从数据库中获取数据,但出现错误 500。我检查了所有代码,但找不到服务器出错的原因。我可以在 workbench 中检查下面的 sql 查询,它得到了完美的输出,但是 spring 启动错误。

Chrome 控制台:

GET http://localhost:8099/wholikepost?pstId=25 net::ERR_INVALID_CHUNKED_ENCODING 200

下面是我的代码:

存储库和服务


// Repository
public interface PostLikeRepo extends JpaRepository<LikePost, Integer>{
    @Query(nativeQuery = true, value = "SELECT * FROM like_master WHERE post_id = ?")
    public List<LikePost> getTotalLikePopup(Integer id);
}

// Service
public class SomeServiceImpl implements SomeService{

    @Autowired
    private PostLikeRepo PostLikeRepo;

    public List<LikePost> getTotalLikePopup(Integer Id){
       return this.PostLikeRepo.getTotalLikePopup(Id);
    }
}

控制器

@RequestMapping(value = "/wholikepost", method = RequestMethod.GET)
@ResponseBody
public List<LikePost> getTotalLikePopup(HttpServletRequest req)
{
    List<LikePost> getWhoLikePost = this.SomeService.getTotalLikePopup(Integer.parseInt(req.getParameter("pstId")));
    return getWhoLikePost;
}

Ajax请求

$(".like-style").on('click', function(){
   let postId = parseInt($(this).attr("id").split("le")[1]); // get post id perfect
   $.ajax({
        type: "GET",
        url: "/wholikepost",
        data:{ pstId: postId },
        success: function(res){ 
            console.log(res);
        }
    });
});

堆栈跟踪

Caused by: java.io.IOException: An established connection was aborted by the software in your host machine
    at java.base/sun.nio.ch.SocketDispatcher.write0(Native Method) ~[na:na]
    at java.base/sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:54) ~[na:na]
    at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:113) ~[na:na]
    at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:79) ~[na:na]
    at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:50) ~[na:na]
    at java.base/sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:532) ~[na:na]
    at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:135) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1364) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:766) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:586) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:530) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:547) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:112) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:194) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.coyote.Response.doWrite(Response.java:615) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:340) ~[tomcat-embed-core-9.0.50.jar:9.0.50]
    ... 67 common frames omitted

99% 的机会您受到以下问题的影响

您的 LikePost 实体通过 @ManyToMany@OneToMany 注释具有循环依赖性,因此在转换为 JSON 响应时它会面临堆栈溢出错误,然后得到隐藏在与客户端的关闭连接之后。

已经有类似事件here

检查您是否可以在某些 @ManyToMany@OneToMany 中添加 @JsonIgnore,如果这样可以消除错误。那么您可以 100% 确定这就是原因。