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

这不是世界末日,但它会是一件好事.

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

我想让User Agent字符串报告应用程序和版本(以及平台),例如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.因此,我猜测有一些机制阻止我覆盖用户代理.

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

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

最佳答案 浏览器不允许覆盖用户代理标头.您可以安装浏览器扩展程序.

另见JQuery Ajax Request: Change User-Agent

点赞