【发布时间】:2015-05-10 17:35:03
【问题描述】:
我正在通过 Laravel 5 上的 AJAX 上传文件。除了一件事,我几乎可以完成所有工作。
当我尝试上传太大的文件时(大于 upload_max_filesize 和 post_max_size,我会抛出 TokenMismatchException。
这是意料之中的,因为我知道如果超出这些限制,我的输入将为空。空输入,意味着没有收到_token,因此负责验证 CSRF 令牌的中间件会大惊小怪。
然而,我的问题不是抛出这个异常,而是它是如何呈现的。当 Laravel 捕获此异常时,它会吐出通用 Whoops 页面的 HTML(由于我处于调试模式,因此有大量堆栈跟踪)。
处理此异常的最佳方法是什么,以便通过 AJAX(或请求 JSON 时)返回 JSON,同时保持默认行为?
编辑:无论抛出什么异常,这似乎都会发生。我刚刚尝试通过 AJAX(数据类型:JSON)向一个不存在的“页面”发出请求,以尝试获取 404,并且发生了同样的事情 - 返回 HTML,没有任何 JSON 友好。
【问题讨论】:
-
所以澄清一下,调试模式和生产模式应该产生相同的结果?
-
通过 AJAX,生产应产生一个响应,指示存在令牌不匹配异常,而无需任何更多信息。调试模式,理想情况下会返回一堆关于异常的额外细节,但我可以忍受它是一样的。
标签: php ajax exception laravel csrf