我正在从一个节点应用程序向一个php文件发出一个post请求,但由于某种原因,POST请求没有注册。下面是PHP文件:
<?php
include_once('yodafunctions.php');
header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$res = array();
$data = isset($_POST['message']);
if($data) {
$res['message'] = $data;
} else {
$res['message'] = 'well that did not work';
}
echo json_encode($res);
} else {
$test = array('message' => 'post not being sent for some reason');
echo json_encode($test);
}我使用npm-request来做http请求,下面是我的相关nodejs服务器代码:
app.get('/', (req, res) => {
console.log(req.query.message);
console.log(req.query);
if(req.query.message && req.query.message !== '') {
console.log(req.query.message);
request({
method: 'POST',
headers: {
'Content-type': 'application/json'
},
followAllRedirects: true,
uri: 'http://localhost/yoda',
json: {
message: req.query.message
}
}, (error, res, body) => {
if(error) {
console.error(error);
return;
}
console.log(`statusCode: ${res.statusCode}`)
console.log(res.body);
})
}
});我最后两次console.log()调用在终端中的输出显示如下:
"statusCode: 200“和
"{ message:‘由于某种原因没有发送帖子’}“。
所以,看起来POST请求可能在PHP文件中没有被识别?
我只是在学习node,所以我真的很感谢你的帮助。
发布于 2020-01-03 10:32:22
首先,始终在include%s之前发送header%s
或在第一个包含文件的顶部发送所有标头
删除第一个if可能会解决您的问题
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {这也可以帮助您检查$_SERVER内容
die( print_r( $_SERVER ) );https://stackoverflow.com/questions/59568486
复制相似问题