簡體   English   中英

在nodeJS中從客戶端到服務器解析值的格式

[英]Parse format of value from client to server in nodeJS

我有一個nodeJS應用

我試圖將使用navigator.userAgent從客戶端獲得的用戶代理值發送到使用ajax的服務器端。

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': '' }

我添加了alert(navigator.userAgent); 我的JavaScript代碼,我得到了這個:

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

為什么我以以下格式將其發送到服務器端? 我該如何解析和閱讀它?

使用$.ajax發布JSON時,必須使用JSON.stringify'Content-Type': 'application/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 }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM