我正在与Angular 7.2组件中的Laravel API进行交互,除delete之外,所有方法都可以正常工作,我可以通过Firefox网络活动控制台看到,当触发该功能时,请求是使用OPTIONS方法发送的。
这是我的服务方式:
elimina( id:number ) {
return this._http.delete( this.apiFMX + '/users/' + id );}
在我的组件中:
eliminaElemento( id:number ) {
this.dataService.elimina( id ).subscribe();
this.ruta.navigateByUrl( '/fmx-listado' );}
但是它不起作用,这是控制台输出:
我在Laravel API中添加了Cors中间件。另外,如果在firefox控制台中编辑了请求,将OPTIONS更新为DELETE方法,则该请求有效。
有什么建议吗?
感谢劝告。
以下是firefox控制台的两个图像:
如您所见,它仍然是OPTIONS方法(由浏览器发送),但是如果我编辑请求并将其重新发送为更新为DELETE方法,它将起作用!
此警告在触发事件时显示,我重复一次,仅在DELETE方法下发生,PUT和GET正常工作。
这是我的中间件:
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' , '*' );
}
谢谢。
答案 0 :(得分:0)
这是Http规范,与Angular无关
Access-Control-Allow-Origin
// your domain : 192.168.30.104
Access-Control-Allow-Origin: http://192.168.30.104
CORS中的请求已被拒绝
在CORS中,使用OPTIONS方法发送了预检请求,因此 服务器可以响应是否可以发送请求 这些参数。
特别是,如果满足以下任一条件,则对请求进行预检:
如果请求使用以下任何一种方法:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS#Preflighted_requests_in_CORS