【问题标题】:How to hide Laravel's 405 Method Not Allowed error screen?如何隐藏 Laravel 的 405 Method Not Allowed 错误屏幕?
【发布时间】: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=productionAPP_DEBUG=false
  • "我是对的" - 嗯......不,不是真的。如果您的用户看到该错误,则说明您的应用程序流程存在问题或链接损坏。普通用户在使用您的应用程序时应该看不到这一点。它是如何发生的,用户如何在 POST 路由上执行 GET?你在用post-redirect-get (PRG)吗?
  • @Don'tPanic 谢谢你的评论。在普通网页中,您是对的。我不使用 PRG,该 URL 用于仅接受 POST 的 API,并且该 API 应仅由知道有该 API 的特定用户使用。所以,我认为其他人通过显示 405 错误知道 API URL 存在是不好的。
  • @KamleshPaul 感谢您的评论。当.envAPP_ENV=productionAPP_DEBUG=false 时,会显示我的问题中的错误屏幕和消息。当APP_DEBUG=true 时,Laravel 的调试界面就会出现。
  • 我不建议在控制器中编写代码。我作为重复链接的问题并不建议在控制器中编写代码。我不知道还能如何解释它。您问题的答案是我 2 天前链接的问题中接受的答案:stackoverflow.com/questions/58829850/… 它显示了如何捕捉MethodNotAllowedHttpException,并用它做任何你想做的事情。例如抛出 404,而不是 405。

标签: laravel


【解决方案1】:

感谢@Don'tPanic 在我的问题的 cmets 中,我找到了答案。

Laravel 提供隐藏 405 错误屏幕的选项。

您可以将 405 错误更改为 404 错误并显示 404 Not Found 错误页面而不是 405 错误页面,而无需在每个控制器操作方法中编写代码。

更多详细信息,请参阅下面的答案和文档:

how to handle 405 error for displaying as webpage laravel

渲染方法 https://laravel.com/docs/5.8/errors#render-method

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 2011-03-31
    相关资源
    最近更新 更多