2017-06-16 100 views
1

我需要知道Accept-Language請求標頭值才能在頁面上進行翻譯。我試圖創建一個像如何在客戶端上獲得Accept-Language請求標頭值

$httpProvider.interceptors.push(requestInterceptor); 

攔截器,但在方法

request: function (config) { 
我攔截

我沒有看到Accept-Language頭。我看到Accept,Cache-Control,If-Modified-Since,Pragma,但在瀏覽器中我看到Accept-Language

+0

您應該有一個標題對象或數組,您可以在其中添加標題信息。 在Angular2/4上,你有這樣的事情: var headers = new Headers(); headers.append('Accept-Language',''xyz); this.http.post(url,data,{ headers:headers }) – moohkooh

+0

@moohkooh當我做請求時,瀏覽器將語言代碼設置爲標題,我需要閱讀它。我不需要設置它,我需要知道瀏覽器設置的價值。 –

回答

2

不是所有的請求頭都可以在AngularJS請求攔截器的配置參數中使用。其他頭值是構建請求時添加的瀏覽器設置。

你可以使用,但我不知道它給你正確的語言。

var language = window.navigator.userLanguage或 window.navigator.language;

只有服務器可以看到Accept-Language的值。所以我認爲最好的方法是從服務器響應主體中獲取這個值,並將其存儲在你的cookie中(例如AcceptLanguageCookie),之後你可以在攔截器中像這樣覆蓋Accept-Language

var app = angular.module("app", []); 

app.config(["$httpProvider", function($httpProvider) { 
    // set Accept-Language header on all requests 
    $httpProvider.defaults.headers.common["Accept-Language"] = $cookies.get("AcceptLanguageCookie"); 
}]); 
+0

我編輯了答案。我希望這可以幫助你 –