在我构建并发布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.
字符串
3条答案
按热度按时间nkoocmlb1#
我有相同的错误日志后,发布我的项目到Web服务器与自定义域。
对我来说,简单的解决办法是进入Appwrite管理,将项目的Web平台主机名从localhost更改为自定义域。
现在它可以在web服务器和本地主机上工作。
xxb16uws2#
如果出现以下情况,可能会发生此错误:
client.setProject()
未被调用1.传递给
client.setProject()
的值不正确1.在您的项目中没有添加与您的应用程序的主机名匹配的Web平台
另外,我不确定你是否应该执行这一步:
我已经将Appwrite服务器的appwrite文件夹中的.env文件修改为example.com和www.example.com。
Appwrite的
APP_DOMAIN*
env变量应设置为您的主Appwrite主机名。tyu7yeag3#
我已经找到了问题的帮助下,应用程序编写支持,希望这有助于有人在那里。
在Appwrite中创建项目时,您需要在项目的控制台设置中创建一个平台。
看起来是将平台创建为Flutter Web导致了这个问题,因为flutter中定义的主机名需要一个反向的主机名,如com.domainName.hostName,因此浏览器将其识别为与客户端不同的域。
解决方案是创建一个Web平台,而不是Flutter Web平台。
应用程序开发支持团队已经承诺,他们将仔细研究它,并修复所需要的。