首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >登录到颤振web应用程序返回flutter_service_worker.js错误

登录到颤振web应用程序返回flutter_service_worker.js错误
EN

Stack Overflow用户
提问于 2022-06-18 09:33:43
回答 1查看 347关注 0票数 1

当我在云ubuntu服务器上部署一个颤振web应用程序时,我可以看到登录屏幕正常,但是登录时,颤振日志显示了这个错误。

代码语言:javascript
运行
复制
preparing port 5000 ...
Server starting on port 5000 ...
172.19.0.14 - - [18/Jun/2022 11:02:06] "GET / HTTP/1.1" 304 -
172.19.0.14 - - [18/Jun/2022 11:02:07] "GET /flutter_service_worker.js?v=1208050259 HTTP/1.1" 304 -

go api返回此错误。

代码语言:javascript
运行
复制
"OPTIONS http://api.mydomain.com/login HTTP/1.1" from 172.19.0.14:59572 - 405 0B in 36.92µs

如果我以linux客户端的身份在本地运行我的应用程序时,它会记录相同的api,所以我想问题是在web浏览器上。无论是Firefox还是Chrome,我都得到了同样的结果。

这是我的“颤栗文档”:

代码语言:javascript
运行
复制
FROM ubuntu:22.04

ARG DEBIAN_FRONTEND=noninteractive 

ENV TZ=Australia/Adelaide

RUN apt-get update 
RUN apt-get install -y apt-utils psmisc
RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback lib32stdc++6 python3
RUN apt-get clean

# download Flutter SDK from Flutter Github repo
RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter

# Set flutter environment path
ENV PATH="/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin:${PATH}"

# Run flutter doctor
RUN flutter doctor

# Enable flutter web
RUN flutter channel master
RUN flutter upgrade
RUN flutter config --enable-web

# Copy files to container and build
RUN mkdir /app/
COPY . /app/
WORKDIR /app/
RUN flutter build web

# Record the exposed port
EXPOSE 5000

# make server startup script executable and start the web server
RUN ["chmod", "+x", "/app/server/server.sh"]

ENTRYPOINT [ "/app/server/server.sh"]

这是我的server.sh脚本

代码语言:javascript
运行
复制
#!/bin/bash

PORT=5000

echo 'preparing port' $PORT '...'
fuser -k 5000/tcp

cd build/web/

echo 'Server starting on port' $PORT '...'
python3 -m http.server $PORT

编辑:我使用chi路由器,所以我在我的api后端实现了下面的修复,现在它可以工作了。

代码语言:javascript
运行
复制
func router() http.Handler {

    r := chi.NewRouter()

    r.Use(middleware.RequestID)
    r.Use(middleware.Logger)
    r.Use(middleware.Recoverer)
    r.Use(middleware.URLFormat)
    r.Use(render.SetContentType(render.ContentTypeJSON))
    r.Use(cors.Handler(cors.Options{
        AllowedOrigins: []string{"https://*", "http://*"},
        // AllowOriginFunc:  func(r *http.Request, origin string) bool { return true },
        AllowedMethods:   []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
        AllowedHeaders:   []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"},
        ExposedHeaders:   []string{"Link"},
        AllowCredentials: false,
        MaxAge:           300, // Maximum value not ignored by any of major browsers
    }))

这个错误仍然存在于我的颤振日志中,现在我在调用saveFile.js时遇到了问题

代码语言:javascript
运行
复制
Server starting on port 5000 ...
172.19.0.6 - - [12/Sep/2022 13:37:48] "GET / HTTP/1.1" 200 -
172.19.0.6 - - [12/Sep/2022 13:37:48] "GET /flutter_service_worker.js?v=2601178962 HTTP/1.1" 200 -
172.19.0.6 - - [12/Sep/2022 13:37:48] "GET /main.dart.js HTTP/1.1" 200 -
172.19.0.6 - - [12/Sep/2022 13:37:48] "GET /index.html HTTP/1.1" 200 -
172.19.0.6 - - [12/Sep/2022 13:37:48] "GET /assets/AssetManifest.json HTTP/1.1" 200 -
172.19.0.6 - - [12/Sep/2022 13:37:48] "GET /assets/FontManifest.json HTTP/1.1" 200 -
172.19.0.6 - - [12/Sep/2022 13:37:49] "GET /flutter_service_worker.js?v=2601178962 HTTP/1.1" 304 -
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-20 10:51:07

当您使用"linux“运行时,这个"linux”可能并不关心CORS,但浏览器关心它。

从错误消息405 - Method not allowed看来,https://api.mydomain.com后面的后端无法处理浏览器发送的OPTIONS请求。您需要将适当的CORS处理添加到后端,即

  • OPTIONS请求添加一个处理程序
  • 将所需的CORS头(请参阅上面链接的文档)添加到答案中

根据您的服务器框架,这也可能只是一个设置或一些现成的中间件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72668202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档