有很多SO問題如何使用JavaScript獲取http標頭,但由於某些原因,它們不顯示HTTP_CF_IPCOUNTRY標頭。用JavaScript獲取Cloudflare的HTTP_CF_IPCOUNTRY標頭?
如果我嘗試使用php echo $_SERVER["HTTP_CF_IPCOUNTRY"];
,它可以工作,所以CF工作得很好。
是否有可能得到這個頭與JavaScript?
有很多SO問題如何使用JavaScript獲取http標頭,但由於某些原因,它們不顯示HTTP_CF_IPCOUNTRY標頭。用JavaScript獲取Cloudflare的HTTP_CF_IPCOUNTRY標頭?
如果我嘗試使用php echo $_SERVER["HTTP_CF_IPCOUNTRY"];
,它可以工作,所以CF工作得很好。
是否有可能得到這個頭與JavaScript?
假設你在談論客戶端JavaScript:不,這是不可能的。
數據從未甚至靠近瀏覽器。
要訪問JavaScript,您需要使用服務器端代碼讀取它,然後將其放入瀏覽器的響應中。
@昆汀的答案是正確的,適用於任何嘗試訪問服務器標頭的JavaScript客戶端。
但是,因爲這個問題是特定於Cloudlfare的,並且特定於在HTTP_CF_IPCOUNTRY標頭中正常獲取2個字母的國家/地區ISO,所以我相信我的解決方法最適合所問的問題。
下面是摘錄的代碼,我在我的前端灰燼App使用,坐在後面的CloudFlare ......和清漆...和... 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或函數之前,也不要害怕調用此函數。我發現它比從Cloudflare的緩存中檢索靜態資源快,有時甚至更快。你可以在Pingdom上運行一個配置文件來確認。
你的意思是 - 客戶端還是服務器端(Node)? – hindmost
客戶端js。 –