Laravel在响应时返回前导\n字符

rqcrx0a6  于 2023-02-17  发布在  其他
关注(0)|答案(6)|浏览(205)

我的Laravel应用程序的每个响应似乎都带有一个\n字符,即使我返回的只是一个数字。
我觉得我必须把这个作为一个bug来介绍,但是我找不到我可能这样做的地方。我看到我在Laravel中构建的一些其他应用程序也有这个(但其他应用程序没有),所以在拔出我的头发之后,我想我应该检查一下,看看其他人是否经历过这个问题。
问题是我试图返回一个ID并使用它,但它有这个前导字符。我可以在客户端剥离它,但宁愿修复根本问题。
预计到达时间:这条路线:

Route::get('/test', function(){
    return 'hello world';
});

生成此响应:

当然,这对于HTML来说不是问题,但是当我尝试将它指定为一个id时,我得到了“\n 234”。

whhtz7ly

whhtz7ly1#

首先,这是一个糟糕的问题结束。
当你的任何文件从公共文件夹的index.php开始到抛出响应的控制器时,就会发生这种情况。任何地方如果有一个<?php ?>,中间有一个新行

<?php开头的路由请求和响应中涉及的任何文件都在第1行以外的任何其他行上
检查您的

  1. public/index.php
  2. bootstrap/app.php
  3. config/app.php
  4. config文件夹下的任何其他文件
    1.路径/web.php或路径/api.php
  5. app/Http/Controllers/YourController.php
    我觉得检查这些必须解决你的问题。如果没有评论下面让我们讨论!
q3aa0525

q3aa05252#

我遇到了同样的问题,并修复了phpStorm的全局正则表达式搜索:

[\s\S]\<\?php

最后,我在<?php之前的index.php中添加了一个新行,就像其他评论中提到的那样

db2dz4w8

db2dz4w83#

我遇到了同样的问题,并在返回任何数据之前使用以下命令查看缓冲区中的内容

dd(ob_get_contents());

原来我有几个“\n”在(routes.php)或在路由文件的情况下,你使用多个文件

ef1yzkbh

ef1yzkbh4#

如果您使用Laravel作为API,我建议使用JSON响应函数:

return response()->json([
    'id' => 234
]);

这将缓解前导换行符问题。
至于为什么您现在会遇到这种情况,这可能与您的请求头有关,在过去,我不得不在请求头中添加'Accept' => 'application/json',以确保Laravel知道我总是想要回JSON。

yfjy0ee7

yfjy0ee75#

我也遇到过这种情况,最后我在public/index.php中发现文件末尾有一行测试代码,我忘记删除了。删除后一切都很好。但还是很奇怪,在我删除之前,多余的文字并没有在本地显示,而是只在live服务器上显示。

ekqde3dh

ekqde3dh6#

我也遇到过同样的问题,通过在控制器返回之前清除输出缓冲区来修复它。

ob_get_clean(); 
return response($data)->header('Content-Type','text/xml');

我已经解决了这个问题,通过查看官方的php文档:https://www.php.net/manual/en/function.ob-get-clean.php
希望对你有帮助

相关问题