Laravel Access-Control-Allow-Origin

时间:2015-12-24 20:02:51

标签: angularjs ionic-framework laravel-5.1

我有一个laravel应用程序,我已经创建了各种api,他们等待我的应用程序发布/获取。

我正在开发一个使用Ngresource并发送post请求的离子应用程序,但是在测试时我收到以下错误:

  

XMLHttpRequest无法加载http://IPADDRESS/api/test响应   预检请求未通过访问控制检查:否   '访问控制允许来源'标题出现在请求的上   资源。起源' http://localhost:8100'因此是不允许的   访问。

我已经尝试将我的api路由包装在一个包含中间件CORS的中间件组中。我还在Kernel.php文件中注册了中间件。见下面的cors中间件。

<?php namespace App\Http\Middleware;
use Closure;

use Illuminate\Contracts\Routing\Middleware;
use Illuminate\Http\Response;

class CORS implements Middleware {

 /**
  * Handle an incoming request.
  *
  * @param \Illuminate\Http\Request $request
  * @param \Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
  return $next($request)->header('Access-Control-Allow-Origin' , '*')
          ->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE')
          ->header('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With');
 }
}

但这没有任何区别,我得到同样的错误。

2 个答案:

答案 0 :(得分:1)

快速脏解决方案是在浏览器中安装cors插件,它可以正常工作。

CORS plugin for chrome

答案 1 :(得分:-1)

如果我理解正确,您正在将XMLHttpRequest发送到与您的页面不同的域。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要执行跨域请求时,您需要做一些不同的事情。关于如何实现这一目标的教程是使用CORS。

enter image description here