Flutter web:如何将资产重定向到其他域?

Posted

技术标签:

【中文标题】Flutter web:如何将资产重定向到其他域?【英文标题】:Flutter web: How can I redirect assets to other domain? 【发布时间】:2021-06-07 22:53:13 【问题描述】:

我在 https://a.com/ 上部署了 Flutter Web html 文件 并设置为cdn

所以当我访问 https://a.com/# 时,它会在 https://b.com/ 上加载所有 js 文件 但资产文件仍从 https://a.com/ 加载,例如 http://a.com/assets/assets/images/sub.png

那么我怎样才能告诉颤振从 https://b.com/static/assets 找到的资产?

【问题讨论】:

【参考方案1】:

您不能从您项目中没有的其他网站加载资产,资产应该在部署之前包含在您的项目文件中。

如果您想使用来自其他网站的资源,您可以使用名为 Image.network() 的小部件,从您的其他网站传递 url 并从网络加载。

Image.network(
 "http://a.com/assets/assets/images/sub.png"
)

【讨论】:

【参考方案2】:

我这样做的方式是在 AWS Amplify 上,因为我没有使用云端,所以资产被放在由 CDN 托管的不同服务器上。

    确保您的主机和目标 CDN 使用相同的协议 (http/https),​​因为请求使用的是 xhr 如果您希望确保更快的加载时间,您也可以使用 preloadjs 预加载资产,并将资产列表放入 JSON 文件中。 使用 .htaccess(位于您的根文件夹中)或放大规则。

.htaccess

RewriteEngine ON
RewriteRule ^assets/(.*)$ https://b.com/static/assets/$1 [R=301,L]

而我的 AWS Amplify 规则是:

[
    
        "source": "/assets/<*>",
        "target": "https://b.com/static/assets/<*>",
        "status": "301",
        "condition": null
    
]

你可以通过https://htaccess.madewithlove.be/测试htaccess规则

这可能因服务器而异(apache、nginx、AWS amplify),但它们搜索的关键字将是“将文件夹重定向到另一个域”或类似的东西。

您不能将Image.assets 指向外部链接,因为这会破坏移动应用程序,除非您创建自己的方法然后将其分解为单独的网络 > image.network & 移动 > image.assets

如果您无权访问服务器,就会出现这种情况。

【讨论】:

以上是关于Flutter web:如何将资产重定向到其他域?的主要内容,如果未能解决你的问题,请参考以下文章

如何重定向到具有多个域的https cpanel

如何从子域重定向到其他域URI?

Plesk:如何将域端口 80 和 443 重定向到我的 Docker 容器?

如何使用 .htaccess 将域路径重定向到其他域路径?

如何在不更改web.config文件中的URL的情况下重定向域?

访问。将排除的子文件夹重定向到域的 https 版本,其他所有内容都被重定向到另一个域