首页 文章

Aurelia使用HEAD方法获取客户端

提问于
浏览
3

我对Aurelia中的fetch(http)客户端有一个简单的要求:使用'head'方法向url发出http请求,以确定资源是否存在(但不下载它) .

通话很容易:

this.http.fetch('http://the.url/something.jpg', { method: 'head', mode: 'no-cors' })
    .then(response => { this.urlIsValid = response.status === 200; })
    .catch(error => { ... Handle error });

但是,fetch客户端似乎永远不会进入.then()方法,它总是被.catch()捕获 .

  • 如果URL存在,或者服务器报告了其他错误(404,405,500等),则错误对象是'blank'响应(即具有您期望的属性,但所有值都为空) .

  • 如果url无效,则错误对象包含消息'Unable to fetch' .

我错过了什么,但是什么都不明显 . Can anyone offer a solution?

这是使用Aurelia 1.0.0 Beta .


更新:根据请求 Headers (由Chrome捕获),其中一个请求作为空白发送 .

网址存在:

Request URL:https://xxx/the/url.pdf
Request Method:HEAD
Status Code:200 OK
Remote Address:xx.xx.xx.xx:443
Accept-Ranges:bytes
Connection:keep-alive
Content-Length:278188
Content-Type:application/pdf
Date:Mon, 08 Feb 2016 00:12:21 GMT
ETag:"955492e4afe7b2199e15cfafd747df27"
Last-Modified:Sun, 13 Dec 2015 01:20:37 GMT
Server:AmazonS3
Via:1.1 xxxxxxx.cloudfront.net (CloudFront)
X-Amz-Cf-Id:g7dK2pGwdnrKAZnkKOvjm0LUyb78dVdiZLB26x-mGbzI8bc9oUa75Q==
X-Cache:Miss from cloudfront

403:

Request URL:https://xxx/invalid/file.pdf
Request Method:HEAD
Status Code:403 Forbidden
Remote Address:xx.xx.xx.xx:443
Connection:keep-alive
Content-Type:application/xml
Date:Mon, 08 Feb 2016 00:16:12 GMT
Server:AmazonS3
Via:1.1 xxxxxx.cloudfront.net (CloudFront)
X-Amz-Cf-Id:q1id8NggywGeBF8PrQuU5L5a--EKGLM7x2glBke-rvV45lXV7Ch2Vg==
X-Cache:Error from cloudfront

1 回答

  • 1

    您的回复不是空白,而是opaque . 不能读取不透明的响应,并且是使用 mode: "no-cors" 进行请求的结果 . 您需要设置模式 mode: "cors" 以允许访问您的响应,但是,服务器应在回答HEAD请求时设置正确的CORS headers .

相关问题