Aurelia 内のフェッチ (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 });
ただし、フェッチ クライアントは .then() メソッドに入るようには見えず、常に .catch() によってキャッチされます。
- URL が存在する場合、またはサーバーによって報告されたその他のエラー (404、405、500 など) がある場合、エラー オブジェクトは「空白」の応答です (つまり、期待するプロパティがありますが、すべての値が空です)。
- URL が無効な場合、エラー オブジェクトには「取得できません」というメッセージが含まれます。
私は何かが欠けていると確信していますが、何が明らかではありません。誰でも解決策を提供できますか?
これは Aurelia 1.0.0 Beta を使用しています。
更新:要求されたヘッダー (Chrome によってキャプチャされたもの) として、空白として渡される要求の 1 つ..
URL が存在します:
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