可以在Angular2中设置http使用的User-Agent标头吗?

时间:2016-10-12 13:19:48

标签: angular http-headers

这不是世界末日,但

目前正在使用Ionic 2构建混合应用,我正在向服务器API发送请求。

我希望用户代理字符串报告应用和版本(以及平台),例如MyApp V1.0 (iOS)

目前我发送的请求如下:

http.post(my_server_url, JSON.stringify(dataToSend), options)

options对象构造为:

let options = {
    headers: myHeaders
};

将标题构造为:

let myHeaders = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('User-Agent', 'MyApp V1.0 (iOS)');

用户代理是使用特定于平台的数据构建的,上面只是用于此问题的直接字符串。

请求按预期工作,数据由服务器接收并相应地执行。服务器发送一个适当处理的适当请求。但是,当我检查实际发送的标头时,User-Agent不是我设置的标头。

例如,在iPhone上,我看到以下用户代理(通过Safari开发人员工具检查,以及服务器日志):

Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko)

这是基于正在使用的包装webview。因此,我猜测有一些机制阻止我覆盖用户代理。

作为同一个App的一部分,我正在上传文件并使用cordova file transfer plugin。我为该传输设置了标头(不是使用Angular http),并且在服务器日志中正确报告了用户代理。

因此,正如问题所述,有没有办法使用Angular http设置自定义User-Agent标头?

1 个答案:

答案 0 :(得分:1)

浏览器不允许覆盖用户代理标头。您可以安装浏览器扩展程序,但允许这样做。

另见JQuery Ajax Request: Change User-Agent