On putting serialized data as a varaiable working fine for me. Below is the code for this:-
var JSONAPIDeserializer = require('jsonapi-serializer').Deserializer;
var data = { "data": [ { "type": "ids", "id": new function(){eval('console.log(`HelloWorld`)')}() } ] }
var UserDeserialize = new JSONAPIDeserializer();
UserDeserialize.deserialize(data)
.then(a => console.log(a))
Below is the output for this on console Desktop$ node new.js HelloWorld [ { id: {} } ]
Now, as per my requirement, If i am taking this serialized data as user input then I am not able to make it work.
Below is my server code:-
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
app.use(cookieParser())
var JSONAPISerializer = require('jsonapi-serializer').Serializer;
var JSONAPIDeserializer = require('jsonapi-serializer').Deserializer;
var port = process.env.PORT || 1337;
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/', function(req, res) {
if (req.body.profile) {
var str = new Buffer(req.body.profile, 'base64').toString();
console.log(str)
var UserDeserialize = new JSONAPIDeserializer();
var obj = UserDeserialize.deserialize(str).then(result => {
console.log(result);
});
if (obj.username) {
res.send("Hello " + escape(obj.username));
}
} else {
res.cookie('test', "This is my test", {
maxAge: 900000,
httpOnly: true
});
}
res.send("Hello World");
});
app.listen(port);
console.log('Server started! At http://localhost:' + port);
So, request is like this:-
POST / HTTP/1.1
Host: localhost:1337
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 132
profile=eyAiZGF0YSI6IFsgeyAidHlwZSI6ICJpZHMiLCAiaWQiOiBuZXcgZnVuY3Rpb24oKXtldmFsKCdjb25zb2xlLmxvZyhgSGVsbG9Xb3JsZGApJyl9KCkgfSBdIH0=
Here profile is eyAiZGF0YSI6IFsgeyAidHlwZSI6ICJpZHMiLCAiaWQiOiBuZXcgZnVuY3Rpb24oKXtldmFsKCdjb25zb2xlLmxvZyhgSGVsbG9Xb3JsZGApJyl9KCkgfSBdIH0= base64 encoded form of { "data": [ { "type": "ids", "id": new function(){eval('console.log(HelloWorld
)')}() } ] }
But, I am getting error as shown:-
html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>TypeError: Cannot read property 'attributes' of undefined<br> at extractAttributes (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer-utils.js:70:36)<br> at module.exports.perform (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer-utils.js:123:13)<br> at resource (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer.js:26:10)<br> at module.exports.deserialize (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer.js:39:14)<br> at /Users/acid/node_js/localhost/velekaam/hacked.js:21:30<br> at Layer.handle [as handle_request] (/Users/acid/node_js/node_modules/express/lib/router/layer.js:95:5)<br> at next (/Users/acid/node_js/node_modules/express/lib/router/route.js:137:13)<br> at Route.dispatch (/Users/acid/node_js/node_modules/express/lib/router/route.js:112:3)<br> at Layer.handle [as handle_request]
What I am doing wrong here ?
via Ashu
No comments:
Post a Comment