为了账号安全,请及时绑定邮箱和手机立即绑定

如何在颤动的Web应用程序中拥有静态HTML站点?

如何在颤动的Web应用程序中拥有静态HTML站点?

Go
千巷猫影 2022-08-24 17:00:06
我在Flutter Web中有一个项目,我想为它创建一个纯HTML的登录页面用于SEO目的。我的目的是创建一个服务器,为具有更高优先级的静态文件提供服务,如果静态HTML文件在请求中返回错误,则应将构建的flutter Web项目用作回退。我在Golang中创建了这个服务器:package mainimport (    "net/http")func main() {    http.ListenAndServe(":2000", professionalServer{})}type professionalServer struct{}var flutterServer = http.FileServer(http.FileSystem(http.Dir("../../../professional/build/web")))var staticServer = http.FileServer(http.FileSystem(http.Dir("../../../professional/landing-page/dist")))func (professionalServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {    res := preflightResponseWriter{OutputData: make(map[string]int)}    staticServer.ServeHTTP(res, r)    if res.OutputData["status_code"] == 200 {        staticServer.ServeHTTP(w, r)    } else {        flutterServer.ServeHTTP(w, r)    }}type preflightResponseWriter struct {    OutputData map[string]int}func (preflightResponseWriter) Header() http.Header {    return http.Header{}}func (preflightResponseWriter) Write([]byte) (int, error) {    return 0, nil}func (p preflightResponseWriter) WriteHeader(statusCode int) {    p.OutputData["status_code"] = statusCode}这实际上可以工作,但问题是Flutter Web使用哈希格式的路由(即 http://website.com/#/dashboard),浏览器不发送主题标签后面的部分,所以我的golang服务器看到 http://website.com/,然后它检查静态文件服务器是否可以处理这个URL,它可以,所以静态文件服务器发送响应。我该如何解决这个问题?是否可以将完整的 URL 发送到服务器,包括 # 后面的部分?提前感谢您的帮助!我如何解决它受到我从@ResamVi那里得到的建议的启发:我按照答案中的步骤操作,以便我的应用程序最终具有基本href /app/。然后,为了使服务器正常工作,我对服务器文件进行了以下更改:package mainimport (    "net/http"    "strings")func main() {    http.ListenAndServe(":2000", professionalServer{})}现在,以 /app 开头的请求将加载 flutter Web 应用的资产,或者,如果没有资产满足请求,则将加载索引.html。如果请求 URL 不以 /app 开头,则会提供静态文件。
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

这可能更适合作为评论,如果你想改变Web应用程序的URL策略,我会问澄清,但我没有代表(原谅我,主,但这个规则有点限制)


如果可以随意更改 URL 策略,则可以通过在适当的位置添加依赖项来执行此操作,如上面的链接中所述:


import 'package:url_strategy/url_strategy.dart';


void main() {

  setPathUrlStrategy();

  runApp(MyApp());

}


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信