【发布时间】:2021-11-28 18:30:45
【问题描述】:
当直接访问使用 Route::post() 的 URL 时,Laravel 会显示以下 405 Method Not Allowed 错误屏幕:
哎呀!发生错误 服务器返回“405 Method Not Allowed”。 东西坏了。请让我们知道发生此错误时您在做什么。我们会尽快修复它。给您带来的不便,我们深表歉意。
我认为向坏人提供有关正确方法的信息是不好的。我说的对吗?
如何隐藏 405 Method Not Allowed 错误屏幕并改为显示 404 Not Found 错误?
配置 .env 或 Laravel 比配置 nginx 或 apache 更好。 而且我不想在每个控制器方法中编写 404 错误重定向。
我只想在生产中隐藏错误屏幕,因为很高兴知道开发时方法不正确(调试模式已打开)。
【问题讨论】:
-
只需将
.env放在APP_ENV=production和APP_DEBUG=false中 -
"我是对的" - 嗯......不,不是真的。如果您的用户看到该错误,则说明您的应用程序流程存在问题或链接损坏。普通用户在使用您的应用程序时应该看不到这一点。它是如何发生的,用户如何在 POST 路由上执行 GET?你在用post-redirect-get (PRG)吗?
-
@Don'tPanic 谢谢你的评论。在普通网页中,您是对的。我不使用 PRG,该 URL 用于仅接受 POST 的 API,并且该 API 应仅由知道有该 API 的特定用户使用。所以,我认为其他人通过显示 405 错误知道 API URL 存在是不好的。
-
@KamleshPaul 感谢您的评论。当
.env是APP_ENV=production和APP_DEBUG=false时,会显示我的问题中的错误屏幕和消息。当APP_DEBUG=true时,Laravel 的调试界面就会出现。 -
我不建议在控制器中编写代码。我作为重复链接的问题并不建议在控制器中编写代码。我不知道还能如何解释它。您问题的答案是我 2 天前链接的问题中接受的答案:stackoverflow.com/questions/58829850/… 它显示了如何捕捉
MethodNotAllowedHttpException,并用它做任何你想做的事情。例如抛出 404,而不是 405。
标签: laravel