【问题标题】:Aurelia Fetch client with HEAD methodAurelia 使用 HEAD 方法获取客户端
【发布时间】:2016-05-15 23:09:24
【问题描述】:

我对 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() 捕获。

  1. 如果 url 存在,或者服务器报告了其他错误(404、405、500 等),则错误对象是“空白”响应(即具有您期望的属性,但所有值都是空的)。
  2. 如果 url 无效,则错误对象包含消息“无法获取”。

我确定我遗漏了什么,但不清楚是什么。 谁能提供解决方案?

这是使用 Aurelia 1.0.0 Beta。


更新:根据请求,其中一个请求的标头(由 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

【问题讨论】:

  • 您可以使用Postman 之类的方式访问资源吗?如果可以,F12 开发者工具是否会为您提供任何其他信息?

标签: aurelia fetch-api


【解决方案1】:

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

【讨论】:

  • 我接受 no-cors 位可能会导致问题,但是提供了 http 状态值(200、405 等),并且肯定应该可以访问!?
  • 这是您的then() 处理程序的真实代码吗?如果 then() 处理程序中存在异常,则可能是调用了 catch。
  • 不透明响应的状态码 = 0,fetch.spec.whatwg.org/#concept-filtered-response-opaque
猜你喜欢
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多