发出 HTTP POST 请求以在 Wordpress 中上传文件 - HTTP POST 请求转换为 GET
Make an HTTP POST request to upload a file in Wordpress - HTTP POST request get converted to GET
我想在我的 Wordpress 网站上有一个 HTTP POST link 让另一个服务器每小时 post 一个 xml 文件进入 Wordpress 服务器,我保存它。
我在与我想要的路线映射的文件夹中创建了一个 index.php 文件,假设我需要示例。com/jobs/uploadFile,所以我在文件夹中创建了一个 php 文件 /jobs/uploadFile 根 Wordpress 目录。
<?php
if( $_SERVER['REQUEST_METHOD'] !== 'POST' ) {
header($_SERVER["SERVER_PROTOCOL"]." Method Not Allowed", true, 405);
exit;
}
$postData = trim(file_get_contents('php://input'));
$xml = simplexml_load_string($postData);
if($xml === false) {
header($_SERVER["SERVER_PROTOCOL"]." Bad Request", true, 400);
exit;
}
$xml->asXml('jobs.xml');
http_response_code(200);
1- 我通过 postman 发送了一个 HTTP POST 请求,但是服务器或 Wordpress 以某种方式将其更改为 HTTP GET 请求,因此总是执行第一个 if 条件。我正在使用 Laravel 带有 Nginx 的伪造服务器。
2- 感谢有关此方法的任何安全建议,CORS...?
感谢您的帮助
既然对别人有帮助,我回答一下我的问题。我做错了。更好的方法是在自定义 Wordpress 插件中使用操作。只需创建一个自定义插件并在其中使用 add_action:
add_action( 'rest_api_init', function() {
register_rest_route(
'myapi/v1', 'myUploadURL',
[
'methods' => 'POST',
'callback' => 'my_upload_function',
'permission_callback' => '__return_true',
]
);
});
然后你可以在my_upload_function()中获取POST请求的$_FILES,并保存在你的服务器上。
我想在我的 Wordpress 网站上有一个 HTTP POST link 让另一个服务器每小时 post 一个 xml 文件进入 Wordpress 服务器,我保存它。
我在与我想要的路线映射的文件夹中创建了一个 index.php 文件,假设我需要示例。com/jobs/uploadFile,所以我在文件夹中创建了一个 php 文件 /jobs/uploadFile 根 Wordpress 目录。
<?php
if( $_SERVER['REQUEST_METHOD'] !== 'POST' ) {
header($_SERVER["SERVER_PROTOCOL"]." Method Not Allowed", true, 405);
exit;
}
$postData = trim(file_get_contents('php://input'));
$xml = simplexml_load_string($postData);
if($xml === false) {
header($_SERVER["SERVER_PROTOCOL"]." Bad Request", true, 400);
exit;
}
$xml->asXml('jobs.xml');
http_response_code(200);
1- 我通过 postman 发送了一个 HTTP POST 请求,但是服务器或 Wordpress 以某种方式将其更改为 HTTP GET 请求,因此总是执行第一个 if 条件。我正在使用 Laravel 带有 Nginx 的伪造服务器。
2- 感谢有关此方法的任何安全建议,CORS...?
感谢您的帮助
既然对别人有帮助,我回答一下我的问题。我做错了。更好的方法是在自定义 Wordpress 插件中使用操作。只需创建一个自定义插件并在其中使用 add_action:
add_action( 'rest_api_init', function() {
register_rest_route(
'myapi/v1', 'myUploadURL',
[
'methods' => 'POST',
'callback' => 'my_upload_function',
'permission_callback' => '__return_true',
]
);
});
然后你可以在my_upload_function()中获取POST请求的$_FILES,并保存在你的服务器上。