WordPress自定义API端点POST请求在React中失败

问题描述 投票:4回答:2

我有一个WordPress后端,我在其中向API添加了自己的自定义端点:

// retrieve countries
register_rest_route( $namespace, '/countries',
    array(
        'methods'  => 'GET',
        'callback' => array( $this, 'get_countries' ),
    )
);

// check answer
register_rest_route( $namespace, '/check_answer',
    array(
        'methods'  => 'POST',
        'callback' => array( $this, 'check_answer' ),
    )
);

我已经这样设置我的环境:https://example.com是React应用程序所在的位置,而WordPress位于https://example.com/wp上的子目录中

我的React应用程序向上述那些端点发出POST和GET请求。我有一个生产环境变量,在其中设置API的基本URL,即https://example.com/wp/wp-json/game(“ game”是我的命名空间),因此我可以使用Axios向https://example.com/wp/wp-json/game/countrieshttps://example.com/wp/wp-json/game/check_answer发出请求,这就是问题所在。

我的服务器已配置为可以在没有www的情况下为React应用程序提供服务。因此https://example.comhttps://www.example.com都服务于同一应用程序。

但是这为我的自定义端点产生了一些有趣的问题:GET请求始终有效。但是POST请求仅在我从https://example.com尝试而不是从https://www.example.com尝试时才有效。如果是后者,它只会向我显示失败的请求。没有回应,没事。

我已经用谷歌搜索,它似乎与CORS有关,但是我无法修复它。这里有什么想法吗?

php reactjs wordpress cors wordpress-rest-api
2个回答
1
投票

首先,我想指出您的Get请求有效,因为它们属于不会触发预检请求的类别。虽然您的Post请求可能正在使用某些标头,但该标头将其从类别中删除,因此需要通过预检才能通过。如果您有兴趣阅读更多信息,请参见文档链接。


-1
投票

我发现了您需要从网址wp中删除的问题,它应该可以正常工作。例如:

© www.soinside.com 2019 - 2024. All rights reserved.