Laravel无法返回true JSON响应
问题描述:
我有一个很简单的Laravel控制器:Laravel无法返回true JSON响应
class MyController extends Controller
{
public function list()
{
return response()->json(['a' => 'hello']);
}
}
当我尝试打开浏览器中的一个对应的URL(我使用谷歌浏览器),它工作正常。有{"a":"hello"}
响应,内容类型为application/json
。
但是,当我接收通过javascript数据(我用fetch polyfill)我看到内容类型是text/html
。我检查了它在GoogleChrome DevTools和我的代码中:
fetch("/list")
.then(function(response) {
console.log(response.headers.get('Content-Type')); // => 'text/html'
return response.json();
})
.then(function(json) {
})
.catch(function(error){
});
嗯,我得到了错误 - Unexpected token < in JSON at position 0
。
我完全不明白发生了什么事。
PS:
Laravel版本 - 5.4,PHP版本7.0.15,XAMPP 3.2.2
取填充工具的版本 - 2.0.3
谷歌Chrome浏览器版本 - 57.0.2987.133
是的,这听起来很奇怪,但在MS Edge v.20.10240,它工作正常。
答
我使用session
AUTH我所有路线试图做到这一点。所以,问题就在那里。 api
路线像下面帮我:
Route::middleware('auth:api')->get('/list', '[email protected]');
一个去想。我为here所描述的所有请求添加了api_token
。
答
你看过开发工具,看看请求响应什么?这可能是服务器返回的HTML与数据 –
“我在GoogleChrome DevTools中检查过它” - 内容类型是“text/html”。那么,问题是为什么?它应该是'application/json'。 – Sergey
尝试检查响应是否可用(您之前做过的同样的事情,但应该在响应标签旁边的标题),每当我看到这个错误时,它往往会出于某种原因而从服务器响应html。 –