资产上的Angular http.head返回404

时间:2018-01-29 13:47:42

标签: angular typescript rxjs httprequest

我创建了一个检查文件是否存在的服务。

fileExists(path: string): Observable<boolean> {
    return this.http.head(path)
        .mapTo(true)
        .catch((error) => {
            console.log(error);
            return Observable.of(false);
        });
}

我有一个pdf文件: /assets/text/text.pdf

当我在浏览器中打开网址时,会显示pdf,但是当我在服务中运行路径时,我会得到 404

HttpErrorResponse {
     headers: HttpHeaders,
     status: 404,
     statusText: "OK",
     url: "https://localhost:4200/assets/text/text.pdf",
     ok: false, 
}

编辑:当我用获取替换 head 时,我得到“%PDf中的意外标记%...”,这意味着它找到了PDF的正文

https://github.com/angular/angular-cli/issues/5170

如果你有解决方案......

1 个答案:

答案 0 :(得分:0)

经过调查,webpack dev服务器不允许设计HEAD请求。

https://github.com/angular/angular-cli/issues/5170

https://github.com/webpack/webpack-dev-server/issues/924

可以创建一个代理但它用GET取代HEAD,这是没有意义的。 另一种解决方案是修改中间件,使其接受问题924中描述的HEAD,这是过度杀伤。