ここでは、コードです:TimeMap does not exists. The archive has no Mementos for the requested URI
:HTTP GETがコード内で504を返し、カール経由で404を返す原因は何ですか?
var request, tmUrl;
request = require('request');
tmUrl = "http://archive.is/timemap/https://www.washingtonpost.com/news/the-fix/wp/2017/01/15/rep-john-lewiss-books-sell-out-following-donald-trumps-attacks/";
// this one works
request('http://www.google.com', function(error, response, body) {
if (!error && response.statusCode === 200) {
return console.log(body.slice(0, 301));
}
});
// this one is always 504
request(tmUrl, {
timeout: 10000, // changing to 60s made no difference,
// response comes back long before that
"User-Agent": 'curl/7.43.0'
}, function(error, response, body) {
if (!error) {
if (response.statusCode === 200 || response.statusCode === 404) {
return console.log(body.slice(0, 301));
} else {
console.error("response code ", response.statusCode);
return console.log(body.slice(0, 301));
}
} else {
return console.error(err);
}
});
問題はcurl
を経由して、その要求を実行すると予想される応答は、このテキストと404を返すことです。しかし、Nodeでレスポンスコードを実行すると、常に504となり、なぜ私はその理由が分かりません。私の推測では、ユーザエージェントは許可されていなかったので、一致させました。うまくいきませんでした。私は次に何をすべきかわからないんだけど...
504タイムアウトは常にCloudFlareのから来ている:
<span class="cf-footer-item"><span data-translate="performance_security_by">Performance
& security by</span> <a data-orig-proto="https" data-orig-ref="www.cloudflare.com/5xx-error-landing?utm_source=error_footer" id="brand_link" target="_blank">CloudFlare</a>
</span>
は問題は、私は「いくつかの方法でサイトにCloudFlareのブロックのプログラムによるアクセスを行うということです気づいていない?
CURLOPT_VERBOSEを有効にし、リクエストヘッダーの違いを比較します。秘密はそれらのヘッダーの中にあります。 – hanshenrik
ああ、私はカールで試してみましたが、私のコードではありませんでした。良い提案です。 – MostlyCarbonite