Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导返回405而不是404,用于发送到未知URL_Java_Spring Boot - Fatal编程技术网

Java Spring引导返回405而不是404,用于发送到未知URL

Java Spring引导返回405而不是404,用于发送到未知URL,java,spring-boot,Java,Spring Boot,免责声明:我不熟悉Java、Spring和Spring Boot 我希望SpringBoot在尝试发布到不存在的URL时返回404。然而,现在它返回一个405,带有一个只包含GET和HEAD的Allow头。有没有办法自定义允许哪些HTTP方法,这样我就可以得到404?我尝试过实现一个定制的ErrorController,但似乎不起作用 要清楚:这是当我发布到一个不应该与我定义的任何端点匹配的URL时,例如 如果需要更多的信息来诊断,我很乐意提供。考虑到我对平台的不熟悉,我不确定什么是相关的。HT

免责声明:我不熟悉Java、Spring和Spring Boot

我希望SpringBoot在尝试发布到不存在的URL时返回404。然而,现在它返回一个405,带有一个只包含GET和HEAD的Allow头。有没有办法自定义允许哪些HTTP方法,这样我就可以得到404?我尝试过实现一个定制的ErrorController,但似乎不起作用

要清楚:这是当我发布到一个不应该与我定义的任何端点匹配的URL时,例如

如果需要更多的信息来诊断,我很乐意提供。考虑到我对平台的不熟悉,我不确定什么是相关的。

HTTP 405(未找到方法)
返回,当URL存在时,
,并且您尝试使用在特定URL映射上不允许的HTTP方法

如果在下面的
../test
上调用POST,则它将返回HTTP 405,反之亦然

@RequestMapping(value = "/test", method = RequestMethod.GET)
如果任何HTTP方法都没有URL映射,那么它将返回HTTP404

要了解特定启动实例上的所有当前映射,只需转到浏览器即可

http://localhost:8080/mappings
请点击此处:

解决方案是采用如下设置: 春天: mvc:
静态路径模式:/static/**

如果任何人仍遇到此问题: 这是SpringFramework 4.2.4上的一个bug,请参阅
正如上面所说的,这个问题从4.3 RC1开始就得到了解决。

您需要用@RequestMapping注释您的方法,并将方法属性设置为所需的类型。创建一个并发布代码。我可以复制这种精确的行为,但我无法解释,这就是为什么我只做了评论而没有回答。我也看到了这一点,提问者的回答是正确的。从源代码看,似乎404只针对无效URL的GET请求返回。对于所有其他请求,无论出于何种原因,框架默认返回405。然而,我的情况是当我发布到一个不存在的URL时。我希望是404,但Spring Boot返回的是405。这是不可能的。如果没有URL映射,它将返回404。如果返回405表示存在映射。用
localhost:8080/mappings
中的映射交叉检查它,我得到一个顶部有粉红色错误消息的页面,上面写着:
此页面包含以下错误:第25列第1行的错误:下面的“>”是第一个错误之前的页面呈现。
此页面试图呈现的模板是什么?我可以纠正它,但我不知道去哪里看。k139是正确的。如果没有可用的URL映射,它将返回404。如果您试图使用错误的HTTP方法来调用控制器方法,您将得到405。你还需要分享相关的代码,这样人们就可以帮助你,如果没有这些代码,你就只能在黑暗中拍摄。我也看到了这一点,提问者的回答是正确的。从源代码看,似乎404只针对无效URL的GET请求返回。对于所有其他请求,无论出于何种原因,框架默认返回405。可能有一些通用处理程序混淆了这个问题。在我的例子中,它与一个定制的
ErrorController
相关。405响应包括
Allow:GET
,但执行
GET
返回404。报告显示,这一问题已经得到解决,但看起来似乎还没有解决。