2015-09-08 6 views
5

javascriptでhttpヘッダーを取得する方法はたくさんありますが、何らかの理由でHTTP_CF_IPCOUNTRYヘッダーが表示されません。CloudflareのHTTP_CF_IPCOUNTRYヘッダをjavascriptで取得しますか?

私がPHP echo $_SERVER["HTTP_CF_IPCOUNTRY"];でしようとすると、それは動作するので、CFは正常に動作しています。

このヘッダーをjavascriptで取得することはできますか?

+0

クライアントまたはサーバー側(ノード)というjavascriptは何を意味していますか? – hindmost

+0

クライアント側js。 –

答えて

5

あなたがクライアント側JavaScriptについて話しているとすれば、いいえ、それはできません。

  1. ブラウザはサーバーに対してHTTP要求を行います。
  2. 要求は、サーバーがデータを決して、データベースにそのIPアドレスを検索していないとのマッチング国
  3. は、サーバーがPHP
  4. にその国を渡し

を見つけ

  • から来たものをIPアドレス、サーバ通知ブラウザの近くにも行きます。

    JavaScriptを使用するには、サーバー側のコードで読み取ってからブラウザに返信する必要があります。

  • 2

    @ Quentinの答えは正しかったし、サーバーヘッダにアクセスしようとしているjavascriptクライアントにも当てはまります。

    しかし、この質問はCloudlfareに固有であり、2文字の国のISOをHTTP_CF_IPCOUNTRYヘッダーで通常取得することに特有なので、質問に最も適した回避策があると思います。

    以下

    ...コードの私はCloudFlareの後ろに座って、Appエンバー私のフロントエンドに使用抜粋...とワニスであるとのfastboot ...

    function parseTrace(url){ 
        let trace = []; 
        $.ajax(url, 
         { 
          success: function(response){ 
           let lines = response.split('\n'); 
           let keyValue; 
    
           lines.forEach(function(line){ 
            keyValue = line.split('='); 
            trace[keyValue[0]] = decodeURIComponent(keyValue[1] || ''); 
    
            if(keyValue[0] === 'loc' && trace['loc'] !== 'XX'){ 
             alert(trace['loc']); 
            } 
    
            if(keyValue[0] === 'ip'){ 
             alert(trace['ip']); 
            } 
    
           }); 
    
           return trace; 
          }, 
          error: function(){ 
           return trace; 
          } 
         } 
        ); 
    }; 
    
    let cfTrace = parseTrace('/cdn-cgi/trace'); 
    

    パフォーマンスは本当に素晴らしいです、ドン」他のAPIや関数を呼び出す前であっても、この関数を呼び出すことを心配しないでください。クラウドフレアのキャッシュから静的リソースを取得するよりも早く、あるいは時には迅速であることがわかっています。あなたはこれを確認するためにPingdomでプロファイルを実行することができます。

    関連する問題