如何在客户端上获得Accept-Language请求标头值
问题描述:
我需要知道Accept-Language
请求标头值才能在页面上进行翻译。我试图创建一个像如何在客户端上获得Accept-Language请求标头值
$httpProvider.interceptors.push(requestInterceptor);
拦截器,但在方法
request: function (config) {
我拦截
我没有看到Accept-Language
头。我看到Accept,Cache-Control,If-Modified-Since,Pragma,但在浏览器中我看到Accept-Language
。
答
不是所有的请求头都可以在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
我编辑了答案。我希望这可以帮助你 –
您应该有一个标题对象或数组,您可以在其中添加标题信息。 在Angular2/4上,你有这样的事情: var headers = new Headers(); headers.append('Accept-Language',''xyz); this.http.post(url,data,{ headers:headers }) – moohkooh
@moohkooh当我做请求时,浏览器将语言代码设置为标题,我需要阅读它。我不需要设置它,我需要知道浏览器设置的价值。 –