JavaScript - POST到URL不发送数据



我正试图从Chrome扩展发送POST数据到我控制的网站。然而,当发送POST数据时,我没有收到任何。

我用这个函数发送它:

async function httpPost(url, data) {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
return response.json();
}

它被这样调用:

const post = await httpPost("https://example.com/api", extracted);

其中extracted包含与{entries: [], total: 0 }相似的东西

我试过console.loghttpPost,response,post没有给任何有用的,除了他们的工作正确。

在服务器端,为$_POSTisset是有效的。请求正在发送和被接收。但是,执行file_put_contents('test.txt', print_r($_POST));将使该文件为空。正在被访问,只是空的。

设置CORS标头:

header("Access-Control-Allow-Credentials: true");
header("Access-Control-Max-Age: 1000");
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding");
header("Access-Control-Allow-Methods: *");
header('Content-Type: application/json');

这个非常令人沮丧的问题是什么?

期望输出:能够接收我用httpPost发送的POST数据。

请参阅https://www.php.net/manual/en/function.print-r.php -如果您想将print_r的输出捕获到字符串中(例如,您可以将其写入文件!)您需要设置return参数,请参见文档。现在可能只是将post变量打印回AJAX响应中,而不是打印到文件中。

。试试这个:

file_put_contents('test.txt', print_r($_POST, true));

编辑:

因为你实际上是在请求中发送JSON,所以以上这些都不是特别适用的。

类似于用PHP接收JSON POST的答案

将JSON数据读入字符串,如下所示:

$json = file_get_contents('php://input');

现在,为了一般地处理它,您将对其运行json_decode(),将其转换为PHP变量(对象或数组,具体取决于确切的内容和您的偏好)。但是,如果您只是想将这些数据写入一个文件,您不妨直接写入原始JSON,因此您可以简单地这样做:

file_put_contents('test.txt', $json);

最新更新