You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress发送PUT请求触发CORS错误,配置响应头后仍报错如何解决

问题根因

你完全搞错了CORS的生效逻辑:你当前的前端代码是直接向discord.com的API发起请求,CORS限制是由**被请求的目标站点(Discord)**的响应头决定的,你在自己的WordPress站点加任何响应头都不可能解决第三方API的跨域问题。
Postman能请求成功是因为它不属于浏览器环境,默认不会执行CORS同源策略校验,和你后端的配置没有任何关系。

另外你当前的实现存在致命安全漏洞:直接把Discord机器人令牌BOT ${this.bot_token}写在前端JS代码里,任何访问页面的用户都可以通过查看源码拿到这个令牌,进而完全控制你的Discord机器人,包括删频道、踢成员、批量发垃圾消息等高危操作。


正确解决方案

你必须通过自己的WordPress后端做请求代理,流程如下:

  1. 前端不要直接请求Discord API,改为请求你自己的WordPress自定义接口
  2. WordPress后端收到前端请求后,用服务端HTTP工具(curl/WordPress内置的wp_remote_request)转发请求到Discord API
  3. 后端拿到Discord的返回结果后,再回传给前端

这种方案下,跨域是你自己站点的前端请求自己的后端,你之前配置的CORS头才会生效,同时机器人令牌只会保存在后端代码里,不会泄露。

示例实现

后端WordPress接口代码(写在functions.php里)

// 注册自定义REST接口
add_action('rest_api_init', function () {
  register_rest_route('custom/v1', '/discord/add_member', [
    'methods' => 'PUT',
    'callback' => 'discord_add_member_handler',
    'permission_callback' => '__return_true', // 可根据需要调整权限校验,比如只允许登录用户调用
  ]);
});

function discord_add_member_handler(WP_REST_Request $request) {
  // 从前端请求拿参数
  $user_id = $request->get_param('user_id');
  $access_token = $request->get_param('access_token');
  $guild_id = '你的服务器ID'; // 存在后端,不要传到前端
  $bot_token = '你的机器人令牌'; // 绝对不要泄露到前端

  // 转发请求到Discord API
  $response = wp_remote_request("https://discord.com/api/guilds/{$guild_id}/members/{$user_id}", [
    'method' => 'PUT',
    'headers' => [
      'Content-Type' => 'application/json',
      'Authorization' => "BOT {$bot_token}",
    ],
    'body' => json_encode([
      'access_token' => $access_token
    ])
  ]);

  // 返回Discord的响应给前端
  return rest_ensure_response(json_decode(wp_remote_retrieve_body($response), true));
}

修改后的前端请求代码

const args = JSON.stringify({
  access_token: token,
  user_id: userID
});
const response = await fetch(
  `https://你的WordPress域名/wp-json/custom/v1/discord/add_member`,
  {
    method: "PUT",
    headers: {
      "Content-Type": "application/json",
    },
    body: args,
  }
);

内容的提问来源于stack exchange,提问作者Lucas Schulze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:24:04