[英]Laravel can't return true json response
我有一个非常简单的Laravel控制器:
class MyController extends Controller
{
public function list()
{
return response()->json(['a' => 'hello']);
}
}
当我尝试在浏览器中打开相应的网址时(我使用谷歌浏览器),它可以正常工作。 有{"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
出现了Unexpected token < in JSON at position 0
。
我完全不明白发生了什么。
PS :
Laravel版本 - 5.4,PHP版本7.0.15,XAMPP 3.2.2
获取polyfill版本 - 2.0.3
谷歌Chrome版本 - 57.0.2987.133
是的,这听起来很奇怪,但在MS Edge v.20.10240中,它运行正常。
您需要设置内容类型为json的请求标头。 我不知道polyfill,但这是我用jquery做的方式
$.ajax({
type: 'GET',
url: url,
contentType: 'application/json; charset=utf-8',
success:
error:
});
我尝试使用session
身份验证我的所有路由。 所以,问题出在那里。 像下面的api
路线帮助我:
Route::middleware('auth:api')->get('/list', 'ApiController@list');
还有一个想法。 我为这里描述的所有请求添加了api_token
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.