发出 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,并保存在你的服务器上。