首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我们不能把数据作为javascript对象而不是JSON对象发送呢?

为什么我们不能把数据作为javascript对象而不是JSON对象发送呢?
EN

Stack Overflow用户
提问于 2018-08-08 11:38:00
回答 1查看 487关注 0票数 0

我是expressjs的新手。我在其中创建了这个应用程序,当我通过POSTMAN传递JSON格式的数据时,它会返回数据。很好,但是当我在请求正文中以javascript对象的形式发送数据时,它就不能工作了,即正文为空。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var express= require('express')
var eApp= express();

eApp.use(express.json());

var collection= [{id: 1, name:'Hunain1'},
                 {id: 2, name:'Hunain2'},
                 {id: 3, name:'Hunain4'}
                ];

eApp.post('/api/hunain/', (req, res) => 
{
    //var col= collection.find(col => col.id === parseInt(req.params.id));

    if(req.body === "")
    {
        res.status(404).send("sorry, object is empty");     
    }
    else
    {
        var collObj= {id: collection.length, name: req.body.name};
        collection.push(collObj);

        res.send(collObj);
    }
});

//console.log('nodeapp4 has been accessed') 

eApp.listen(100, () => console.log('nodeapp4 is listening to your requests'));

JSON格式的请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "id": 3,
    "name": "Bose"
}

返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "id": 4,
    "name": "Bose"
}

这是我在postman中选择application/Json的时候。

但当我选择Javascript并将其写入body时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 {
    id : "2",
    name : "Bose"
}

然后它只返回id而不返回name,即body作为空发送,为什么?

EN

回答 1

Stack Overflow用户

发布于 2018-08-08 14:09:40

JSON是一种数据传输格式。它的唯一目的是紧凑、易于序列化/反序列化和独立于编程语言(有针对所有流行语言的JSON库)。

JavaScript对象是特定于JavaScript运行时的(它们不能被Python或C#服务器使用),并且对于数据传输是不安全的,因为它们可以包含行为(方法)。假设有人向你发送了这个恶意的JS对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  firstName: (function () {
    var fs = require('fs');
    // proceed to delete all files in the directory...
  })()
}

如果您在Node.js环境中,运行时解析此类恶意对象,您将面临巨大的安全威胁。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51745770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文