Php 拉威尔的JSONP
浏览器向Laravel发送JSONP请求,Laravel将结果返回浏览器。在浏览器控制台中,我收到警告:Php 拉威尔的JSONP,php,javascript,jquery,jsonp,laravel,Php,Javascript,Jquery,Jsonp,Laravel,浏览器向Laravel发送JSONP请求,Laravel将结果返回浏览器。在浏览器控制台中,我收到警告: Resource interpreted as Script but transferred with MIME type text/html: 我相信这是由于JSONP响应中的头不正确造成的?如何修复此警告 PHP $callback = Input::get('callback'); $result = DB::table('users')->find(123); return
Resource interpreted as Script but transferred with MIME type text/html:
我相信这是由于JSONP响应中的头不正确造成的?如何修复此警告
PHP
$callback = Input::get('callback');
$result = DB::table('users')->find(123);
return $callback . '(' . json_encode($result) . ')';
Response::JSON($result)
将返回通常的JSON响应,我相信它不会返回包含回调函数名的JSONP变量。您可以在Response::JSON()调用中提供头
JSONP的正确MIME类型是application/javascript。您可以在Lavavel 4中执行此操作:(原文:Tu puedes hacer esto en Laravel 4) 正如所建议的那样更好,因为您不必操纵$result 另一个选项是echo,而不是使用响应。对于Laravel(5.1及以上)或Lumen(5.1及以上): 如果要创建JSONP响应,除了setCallback之外,还可以使用JSON方法:
return response()
->json(['name' => 'Abigail', 'state' => 'CA'])
->setCallback($request->input('callback'));
对于Laravel>8,要创建JSONP响应:
return response()
->json(['name' => 'Abigail', 'state' => 'CA'])
->withCallback($request->input('callback'));
我们应该使用with callback()而不是setCallback()
据拉威尔说
Response::json($result)->setCallback(Input::get('callback'));
return response()
->json(['name' => 'Abigail', 'state' => 'CA'])
->setCallback($request->input('callback'));
return response()
->json(['name' => 'Abigail', 'state' => 'CA'])
->withCallback($request->input('callback'));