Angular HTTP Post 请求,Payload 嵌套在 JSON 对象中

Posted

技术标签:

【中文标题】Angular HTTP Post 请求,Payload 嵌套在 JSON 对象中【英文标题】:Angular HTTP Post Request, Payload is nested in JSON Object 【发布时间】:2015-03-19 05:15:18 【问题描述】:

我正在学习 Angular 和 Node,我正在尝试弄清楚如何让我的 Angular 应用程序运行在一个单独的应用程序中,该应用程序托管一个 rest API。

请求正文显示为 '"name":"test"': '' 我希望它显示为 "name" : "test"

这是发送 post 请求的前端应用程序。

$http(
  method: 'POST',
  url: 'http://localhost:8080/api/test',
  data: 
    "name": 'test'
  ,
  dataType: "json",
  headers: 'Content-Type': 'application/x-www-form-urlencoded'
);

它正在击中定义为的路线

app.use(bodyParser.urlencoded(extended: true));
app.use(bodyParser.json());
app.all('/', function(req, res, next) 
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
 );
router.post('/test', function(req, res) 
    var name = req.body.name;
    console.log(req.body);
);

我预计问题出在内容类型为 application/x-www-form-urlencoded 但我不知道如何允许 cors 与 application/json。

【问题讨论】:

【参考方案1】:

JSONP 可用于执行 CORS 请求(更多关于 json/jsonp 的信息,请参见 What are the differences between JSON and JSONP?),以及在 AngularJS 文档中 - jsonp using $http

【讨论】:

感谢您的回复!那也行得通。我阅读了有关 CORS 的更多内容,发现了预飞行的概念,并添加了一个函数,该函数将向 application/json 请求发送 200 回复,上面的代码现在可以工作了。 @dberry2002 那么您可以通过单击左侧的灰色复选标记来接受此答案正确 - ***.com/help/someone-answers 将在 4 分钟计时器到时执行。再次感谢:)

以上是关于Angular HTTP Post 请求,Payload 嵌套在 JSON 对象中的主要内容,如果未能解决你的问题,请参考以下文章

使用 $http.post (angular) 和 bodyparser.text() 发送字符串请求时,请求正文作为对象返回?

如何在 Angular 4 Universal 中发出 http post 请求?

Angular http post 请求失败,但 axios 1 有效

从http post请求下载文件 - Angular 6

ANGULAR 没有向我的特定 Http Post 请求发送标头

在 Angular2 HTTP POST 中设置 JSON 请求标头