2017-06-16 1045 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

我编辑了答案。我希望这可以帮助你 –