[英]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.