据我所知,HEAD请求应该很简单,并且不会触发飞行前请求。
import { HttpClient } from '@angular/common/http';
constructor(private _http: HttpClient) {}
validateYoutubeId(id): Observable<boolean> {
return this._http.head(`https://www.youtube.com/watch?v=wMXU27Xl8eU`).pipe(
map((res: any) => {
console.log(res);
return true;
}),
catchError<any, Observable<boolean>>(err => {
console.log(err);
return of(false);
})
);
}
上面的代码是一个简单的head请求,但仍会触发预检请求并导致cors错误。我猜想HttpClient会自动添加som不安全的标头,但我似乎无法弄清楚哪些标头以及如何防止添加标头。
跨源读取阻止(CORB)阻止了跨源响应 https://www.youtube.com/watch?v=wMXU27Xl8eU,MIME类型为text / html。 在访问XMLHttpRequest 原产地的“ https://www.youtube.com/watch?v=wMXU27Xl8eU” “ http://localhost:36545”已被CORS政策禁止:否 请求中存在“ Access-Control-Allow-Origin”标头 资源。
编辑 实际上,事实证明没有进行飞行前请求。头请求的响应被阻止。