Flutter Web和Appwrite CORS问题发布到我的Web服务器后

wz8daaqr  于 2023-11-21  发布在  Flutter
关注(0)|答案(3)|浏览(135)

在我构建并发布Flutter Web应用程序后,我遇到了一个问题。当从IDE Android Studio运行时,我的应用程序运行得很好,在Localhost:somePort中使用Google chrom。
我所做的:

  • 发布我的应用程序到我的Web服务器,它是在网站上与我的域,即www.example.com工作
  • 在Appwrite控制台设置中为我的Appwrite应用程序创建了一个自定义域ar.example.com,
  • 在域名的DNS设置中创建了一个记录,Appwrite的控制台可以通过https://ar.example.com/的browsert访问,
  • 根据文档在Appwrite服务器上创建了SSL证书。
  • 将Flutter应用中的Appwrite端点更改为指向新地址:https://ar.example.com/v1
  • 我已经将Appwrite服务器的appwrite文件夹中的.env文件修改为example.com和www.example.com

尽管如此,我可以在浏览器中打开应用程序,但当它试图从服务器运行第一个命令时,它停止运行,浏览器的控制台给了我一个CORS错误,如下所示:

Access to XMLHttpRequest at 'https://ar.example.com/v1/account?#' from origin 'https://example.com/' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value 'https://localhost/' that is not equal to the supplied origin.

字符串

nkoocmlb

nkoocmlb1#

我有相同的错误日志后,发布我的项目到Web服务器与自定义域。
对我来说,简单的解决办法是进入Appwrite管理,将项目的Web平台主机名从localhost更改为自定义域。
现在它可以在web服务器和本地主机上工作。

xxb16uws

xxb16uws2#

如果出现以下情况,可能会发生此错误:

  1. client.setProject()未被调用
    1.传递给client.setProject()的值不正确
    1.在您的项目中没有添加与您的应用程序的主机名匹配的Web平台
    另外,我不确定你是否应该执行这一步:
    我已经将Appwrite服务器的appwrite文件夹中的.env文件修改为example.com和www.example.com
    Appwrite的APP_DOMAIN* env变量应设置为您的主Appwrite主机名。
tyu7yeag

tyu7yeag3#

我已经找到了问题的帮助下,应用程序编写支持,希望这有助于有人在那里。
在Appwrite中创建项目时,您需要在项目的控制台设置中创建一个平台。
看起来是将平台创建为Flutter Web导致了这个问题,因为flutter中定义的主机名需要一个反向的主机名,如com.domainName.hostName,因此浏览器将其识别为与客户端不同的域。
解决方案是创建一个Web平台,而不是Flutter Web平台。
应用程序开发支持团队已经承诺,他们将仔细研究它,并修复所需要的。

相关问题