-1

当用户提交联系表单时,我的 Flutter Web 应用需要调用 API。API 是一个不和谐机器人的 API,它继续在我的不和谐服务器上的特定频道中发布消息。此设置适用于使用相同依赖项和相同生产环境(Firebase 托管)的其他两个应用程序,但在此特定应用程序上会引发以下错误:

从源“https://autonet.tk”访问“https://discordapp.com/api/channels/689799838509957177/messages”的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

如果我将标头添加'Access-Control-Allow-Origin': '*'到请求中,我只会得到一个XMLHttpRequest error

我的代码:

import 'package:http/http.dart' as http;
var resp = await http.post(
      "https://discordapp.com/api/channels/689799838509957177/messages",
      headers: {
        'Authorization': "Bot " + botToken,
      },
      body: {
        "content": "NEW MESSAGE: " + body
      });

更难对根本原因进行三角测量是因为它在我的本地机器上运行良好。只有在我将应用程序部署到 Firebase 托管时,我才会收到 CORS 错误。另一件值得注意的事情是,在 Discord 方面,我无需进行任何配置即可接受其他两个使用相同代码运行良好的 Web 应用程序的传入请求。(没有允许的主机列表)。

4

1 回答 1

-1

'Access-Control-Allow-Origin' 它是一个必须在响应中的标头,而不是在请求中。有关更多信息,我建议您阅读以下内容:

https://stackoverflow.com/a/20035319/14106548

编辑:经过一项小型研究,我认为您调用了错误的端点。这就是为什么响应没有附加正确的标题。终点是:

https://discord.com/api

有关更多信息,请查看:https ://discord.com/developers/docs/reference

于 2020-11-29T18:09:21.450 回答