如果验证失败/成功,Laravel 会更改响应标头
Posted
技术标签:
【中文标题】如果验证失败/成功,Laravel 会更改响应标头【英文标题】:Laravel changing response header if validation fails/succeeds 【发布时间】:2015-12-18 16:54:54 【问题描述】:如果你的验证失败,Laravel 有这个很好的功能来返回 JSON。
http://laravel.com/docs/5.0/validation#controller-validation
不幸的是,响应标头设置为 client-side,如下所示。看起来 Laravel 会成功验证并以某种方式将响应标头更改为 html。但是,我在任何地方都没有看到这一点。有人有线索吗?
$.ajax(
dataType: "JSON",
error: function(error) //422 response, validation errors go here
success: function(response) //if validation successful
更新 我正在使用表单请求而不是基于控制器的验证,但这应该没什么区别。
【问题讨论】:
“设置客户端”是什么意思? Laravel 纯粹在服务器后端工作。您会期望哪些标头以及您会得到哪些响应标头? 表示如果成功则返回重定向响应。当然你可以在你的 AJAX 回调中捕捉到这个并做你想做的任何事情? 好吧,有道理,你能了解一下success(response)
处理程序中的样子吗?
它实际上说如果它的AJAX,no重定向将被生成。
【参考方案1】:
使用 laravel,您可以更改通过 Laravel 发送给客户端的响应标头。
在您的控制器上的 5.1 中,您可以发送所需的响应标头,然后为它们提供不同的实现。
return response()->json(['message'=>'Error Encountered'],422);
这会向您的客户端发送 422 错误。第二个论点,您可以根据传递给客户端的内容设置不同的 http 代码。 看看函数在
处接受什么http://laravel.com/api/5.1/Illuminate/Contracts/Routing/ResponseFactory.html#method_json
同样适用于 laravel 5.0
http://laravel.com/api/5.0/Illuminate/Contracts/Routing/ResponseFactory.html#method_json
对于验证后的重定向,您可以像这样附加标头
return Redirect::back()->header('Cache-Control', 'no-store');
http://laravel.com/api/5.0/Illuminate/Http/ResponseTrait.html#method_header
【讨论】:
谢谢@Mwaa。如何将其更改为 HTML? 在 html 中改变什么?回应? 是的,响应设置为 JSON 客户端,但我想在我的 laravel 应用中将其更改为 HTML 输出。 @timpeterson 您可以编辑问题以包含控制器操作如何验证。您使用的是表单请求还是常规验证? 我正在使用表单请求(自定义请求)。将编辑问题。谢谢以上是关于如果验证失败/成功,Laravel 会更改响应标头的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel 和 Passport 在身份验证失败时响应状态码 401?
Laravel API 调用失败。 PostMan 使用 Basic Auth 覆盖 Authorization 标头