Laravel Response :: json在浏览器中给出跨域错误,即使标题是Access-Control-Allow-Origin:*

我得到了这个Laravel 4问题,这对我来说真的很困惑。 我在同一个控制器上创建了这两个方法。 声明控制器是宁静的。 ajax请求来自不同的域。

不起作用

public function getOwnlist(){ $test = User::with(array("images", "images.category"))->find(Auth::user()->id); return Response::json($test, 200, array('Access-Control-Allow-Origin' => '*')); } 

作品

 public function getLatest(){ $images = DB::table("images")->where("public","=","1")->orderBy("created_at")->take(10)->get(); return Response::json($images, 200, array('Access-Control-Allow-Origin' => '*')); } 

浏览器获得标准的跨域错误。

这个例子对我有用,你可以试试这个。

 public function getOwnlist(){ $images = User::with('images.category')->find(Auth::getUser()->getAttribute('id')); return Response::json($images, 200, array('Access-Control-Allow-Origin' => '*')); } 

另外,我强烈建议在Controller Base的构造函数上设置它们,而不是在每个响应中设置标题。 或者您可以创建一个仅用于提供API并从中扩展。

应该是这样的:

 protected $response; // This is a global variable on you BaseController // This goes on your BaseController constructor $this->response = Response::make(); $this->response->headers->add(array('Access-Control-Allow-Origin', '*'); 

我在使用jQuery时发现了Cross Domain AJAX的一些问题,它只适用于我,如果我指定域而不是使用*

有关Eloquent Models的更多信息: http : //laravel.com/docs/eloquent#querying-relations