我正试图从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.log
对httpPost
,response
,post
没有给任何有用的,除了他们的工作正确。
在服务器端,为$_POST
做isset
是有效的。请求正在发送和被接收。但是,执行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);