2016-02-24 65 views
0

我是新来的这个,我想登录并获得令牌,所以离子和laravel可以沟通。我在laravel上使用卫星和jwt。上邮递员,我得到令牌回来:离子laravel XMLHttpRequest无法加载

这是我从离子获得登录电子: [在这里输入的形象描述] [2]

错误说:

的XMLHttpRequest不能加载http://localhost:8000/api/authenticate。对预检请求的响应不会通过访问控制检查:请求的资源上不存在“访问控制 - 允许来源”标头。因此不允许访问原产地'http://localhost:8100'。

和是的,我laravel侧,我已经包括

标题( “访问控制允许来源:*”);

缺少什么我在这里,谢谢大家

+0

图书馆[Laravel 5中的CORS](https://github.com/barryvdh/laravel-cors)解决了OP的问题,正如他在回答中提到的那样,当我试图编辑它时,审查队列被删除。 – TylerH

回答

0

有很多因素,为什么出现这种情况。错误可能会发生,因为您没有访问标题,浏览器会获取该标题并阻止您的请求。

当您的服务器遇到像500,403,401等内部错误时,您也可能会在您的laravel应用中为请求生命周期添加标头(如在中间件中过滤所有api请求),但有时会出现错误500或甚至echo或dd()会中断整个请求生命周期,并返回浏览器无法通过ajax调用解释的错误,因此它会丢失隐式添加的标题,从而导致浏览器返回到预检请求错误。

我建议的唯一解决方案是在代码中正确的错误处理,并在响应中返回错误并以json格式返回。

public function someController extends Controller{ 
    public function Foo(Request $request){ 
    $input_bag = [ 
      'some input' => first_$input, 
      'another important input' => $second_input,     
     ]; 

     $i = 0; 
     foreach ($input_bag as $key => $value) { 
      $value = trim($value); 

      if (empty($value)) { 
       $error_bag[$i] = "$key empty"; 
       $i++; 
      } else { 
       // 
      } 
     } 
     //filter of false or null values 
     if (array_filter($error_bag)) { 
      return response()->json($error_bag, 400); 
     } 


    } 

这将在运行代码时返回错误的json响应。并且充分利用尝试捕获并返回适当的响应可以使您的调试生活变得轻松。