如何在客户端上获取Accept-Language请求标头值

时间:2017-06-16 12:08:30

标签: angularjs

我需要知道Accept-Language请求标头值才能在页面上进行翻译。我试图创建像

这样的拦截器
$httpProvider.interceptors.push(requestInterceptor);

,但在方法中

request: function (config) {
我的拦截器的

我没有看到Accept-Language标题。我看到Accept,Cache-Control,If-Modified-Since,Pragma但在浏览器中我看到Accept-Language

1 个答案:

答案 0 :(得分:2)

AngularJS请求拦截器的config参数中并非所有请求标头都可用。其他标题值是在构造请求时添加的浏览器设置。

你可以使用,但我不确定它能为你提供合适的语言。

  

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

只有服务器才能看到Accept-Language的值。所以我认为最好的方法是从服务器响应体中获取此值并将其记忆在您的cookie中(名称示例为AcceptLanguageCookie),之后您可以在拦截器中覆盖Accept-Language。{/ p >

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");
}]);