node.js - nodejs post 传值方式

【字号: 日期:2022-10-05浏览:22作者:雯心

问题描述

第一种方式:前端

$.ajaxSetup({ contentType: 'application/json; charset=utf-8' }); $.post(’/test’, JSON.stringify({ 'Email': 'sfpe@163.com', 'Password': '123456', 'person': {'age': 25 } }), function(data){ debugger });

后端

console.log(util.inspect({a: req.body}));console.log(util.inspect({a: req.body.Email}));

结果

{ a: { Email: ’sfpe@163.com’, Password: ’123456’, person: { age: 25 } } }{ a: ’sfpe@163.com’ }

第二种方式前端

$.post(’/test’, { post:JSON.stringify({ 'Email': 'sfpe@163.com', 'Password': '123456', 'person': {'age': 25 } }) }, function(data){ debugger });

后端

console.log(util.inspect({a: req.body.post}));console.log(util.inspect({a: req.body.post.Email}));

结果

{ a: ’{'Email':'sfpe@163.com','Password':'123456','person': {'age':25}}’ }{ a: undefined }

问题:哪种传给后端的是json格式 ? 我用第二种传了,后端说不是json的格式....用第一种,报了这种错误: Response to preflight request doesn’t pass access control check: No ’Access-Control-Allow-Origin’ header is present on the requested resource. Origin ’http://localhost:3000’ is therefore not allowed access.

我现在都不知道是我的问题 还是后端的问题。

问题解答

回答1:

跨域请求处理

回答2:

第一种是OK的,不过跨域了,可以看看构建public APIs与CORS

我来简单说下,为什么控制台报了错:Response to preflight request doesn’t pass access control check: No ’Access-Control-Allow-Origin’ header is present on the requested resource. Origin ’http://localhost:3000’ is therefore not allowed access.

是因为,POST方法,header中的content-type不是application/x-www-form-urlencoded,multipart/form-data、multipart/form-data、text/plain中的任意一种。你设置的是application/json; charset=utf-8,这就表示这个请求是一个“复杂”请求了,那么当复杂请求面对跨域访问时,就会请求后端服务提供相应支持。具体就看我发的那篇文档,里'不是那么简单的请求'这个章节吧,最好拉着你们后端同事一起看,免得人家不给你支持,你自己搞半天也毛用没有

相关文章: