我试图以角度调用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');
答案 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);
});
}