亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在顫動的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 關注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號