2017-01-15 3 views
0

ここでは、コードです:TimeMap does not exists. The archive has no Mementos for the requested URIHTTP 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 
&amp; 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のブロックのプログラムによるアクセスを行うということです気づいていない?

+0

CURLOPT_VERBOSEを有効にし、リクエストヘッダーの違いを比較します。秘密はそれらのヘッダーの中にあります。 – hanshenrik

+0

ああ、私はカールで試してみましたが、私のコードではありませんでした。良い提案です。 – MostlyCarbonite

答えて

0

とにかく504リクエストは結果をゲートウェイタイムアウトとして返しません。 あなたのコードでそれを処理してみませんか?例えば、 。 if(response.statusCode === 200 || response.statusCode === 404 || response.statusCode === 504){

+0

しかし、504は404とは非常に異なる応答です。なぜ私はそれらを同じように扱いますか? – MostlyCarbonite

+0

は、達成したいことによって異なります。 404と504の両方が結果のないエラーコードです。私は小規模な調査を行い、504のエラーがクラウド運賃に共通していることを発見しました。サーバーの設定とログを再確認する必要があります。 –

関連する問題