Aurelia使用HEAD方法获取客户端

时间:2016-02-05 20:47:19

标签: aurelia fetch-api

我对Aurelia中的fetch(http)客户端有一个简单的要求:使用' head'方法向网址发出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()捕获。

  1. 如果网址存在,或者服务器(404,405,500等)报告了其他错误,则错误对象为空白'响应(即具有您期望的属性,但所有值都为空)。
  2. 如果网址无效,则错误对象包含“无法提取”消息。
  3. 我确定我错过了一些东西,但它并不明显。 任何人都可以提供解决方案吗?

    这是使用Aurelia 1.0.0测试版。

    更新:根据请求标题(由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 个答案:

答案 0 :(得分:1)

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