获取请求在api上工作,但帖子给出了错误

时间:2017-09-20 06:41:51

标签: angular laravel

我试图以角度调用Laravel API:

search(data){

 console.log(data);

 this.http.get('http://localhost:8000/flight',JSON.stringify(data))
    .subscribe(res=>{
        console.log(res);
  });

}

以上是使用GET请求。

 search(data){
   console.log(data);
   this.http.post('http://localhost:8000/flight',JSON.stringify(data))
        .subscribe(res=>{
           console.log(res);
  });
}

但不使用POST请求

这是我得到的错误:

  

请求时没有'Access-Control-Allow-Origin'标头   资源。因此不允许来源“http://localhost:4200”   访问。

即使我的正确编写了我的cors middelware

 return $next($request)->header('Access-Control-Allow-Origin', '*')
        ->header('Access-Control-Allow-Credentials', true )
        ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
        ->header('Access-Control-Allow-Headers',' Origin, Content-Type, X-Auth-Token');

2 个答案:

答案 0 :(得分:1)

在帖子方法中尝试这样:

在laravel服务器端

Header set Access-Control-Allow-Origin "http://localhost:3000"

(or)

header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, If-Modified-Since, Cache-Control, Pragma");

需要重新启动apache。

以角度

发布方法
search(data: any) {
    return this.http.post('http://localhost:8000/flight', data).map(res => {
        const jsonResponse = res.json();
        return jsonResponse;
    });
}

答案 1 :(得分:0)

我只需要对代码进行更改,即删除JSON.stringify,因为它是发送字符串而不是json对象

 search(data){
 console.log(data);
  this.http.post('http://localhost:8000/flight',data)
    .subscribe(res=>{
       console.log(res);
  });
 }