Javascript 在nodeJS中解析从客户端到服务器的值格式

Javascript 在nodeJS中解析从客户端到服务器的值格式,javascript,node.js,Javascript,Node.js,我有一个nodeJS应用程序 我正在尝试使用ajax将从客户端使用navigator.userAgent获得的用户代理值发送到服务器端 PS:我知道我可以从服务器访问用户代理。我知道这一点。我这样做是为了某种目的。 详情如下: window.addEventListener('DOMContentLoaded', async() => { $.ajax({ type:'POST', url:'/UA/send/',

我有一个nodeJS应用程序

我正在尝试使用ajax将从客户端使用
navigator.userAgent
获得的用户代理值发送到服务器端

PS:我知道我可以从服务器访问用户代理。我知道这一点。我这样做是为了某种目的。

详情如下:

window.addEventListener('DOMContentLoaded', async() => {
            $.ajax({
            type:'POST',
            url:'/UA/send/',
                    data: navigator.userAgent })             
});
在我的nodeJS服务器中,我是这样读的:

app.post('/UA/send', function(req, res) 
{  
        console.log(req.body));
});
这是回报

{ 'Mozilla/5.0 (X11; Linux x86_64) Chrome/64.0.3282.140 Safari/537.36': '' }
我添加了
警报(navigator.userAgent)到我的javascript代码,我得到了以下结果:

Mozilla/5.0 (X11; Linux x86_64) Chrome/64.0.3282.140 Safari/537.36

为什么我要将它以以下格式发送到服务器端?我如何解析和阅读它

使用
$.ajax
发布JSON时,必须使用
JSON.stringify
的“内容类型”:“应用程序/JSON”
标题,否则就是发送表单数据。在您的示例中,您将用户代理作为密钥发送,但没有值

这就是为什么发布的对象看起来像:
{[userAgentValue]:''}

使用此选项发布JSON

 $.ajax({
      type:'POST',
      url:'/UA/send/',
      headers: { 'Content-Type': 'application/json' },
      data: JSON.stringify({ userAgent: navigator.userAgent })
 });
在服务器上使用正确的正文解析器:

app.use(bodyParser.json());
现在您将收到:

{ userAgent: 'Mozilla/5.0 (X11; Linux x86_64) Chrome/64.0.3282.140 Safari/537.36' }

如果您不想发布JSON,而是在使用:
application/x-www-form-urlencoded

$.ajax({
     type:'POST',
     url:'/UA/send/',
     data: { userAgent: navigator.userAgent }
 });
在您的服务器上:

app.use(bodyParser.urlencoded({extended:false}));

尝试将AJAX数据设置为
数据:{'userAgent':navigator.userAgent}