使用 Echo 服务文件
Serving files with Echo
我正在尝试使用 Echo 提供多个文件,但并非每次都有效。
api 代码如下所示:
package main
import (
"github.com/labstack/echo"
"net/http"
)
func main() {
e := echo.New();
e.GET("/", home);
e.File("/data1", "assets/data1.csv");
e.File("/data2", "assets/data2.csv");
e.Logger.Fatal(e.Start(":4243"));
}
func home(c echo.Context) error {
return c.String(http.StatusOK, "Are you lost?");
}
准确地说,它确实适用于第一次文件提取,但随后的任何后续调用(无论是文件提取还是更多 "classic" 调用)都会失败。每个浏览器的错误消息略有不同:
在Chrome中:
SyntaxError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'Bearer {the_entire_content_of_the_first_fetched_file}' is not a valid HTTP header field value.
在 Firefox 中:
SyntaxError: An invalid or illegal string was specified
在 Edge 中,只需:
SyntaxError
尝试激活 CORS,没有任何改变。
看起来与 Postman 配合得很好。可能是我在应用程序中获取数据的方式有问题?
如果您可能需要更多信息,此主题与我之前的主题 () 直接相关,但我不想将它们混淆,因为我还不知道是否我在 Vue 代码或 Echo 代码中弄错了...
如果您想从某个目录传送文件。您可以通过以下方式进行:
e.Use(middleware.Static("/path/to/directory"))
或
fs := http.FileServer(http.Dir("/path/to/directory"))
e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/assets/", fs)))
只需添加默认的 CORS 中间件,我只是测试了一下,即使我使用不同的域,它也能正常工作。
从 echo 框架导入这个包:"github.com/labstack/echo/middleware"
并在您的路线之前添加此默认 CORS 配置:
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"*"},
AllowMethods: []string{echo.GET, echo.PUT, echo.POST, echo.DELETE},
}))
哎呀,看来这一直是我的应用程序的错!我的 Echo api 似乎还不错……暂时!
如果有人遇到同样的问题,也许这个 会有所帮助。
我正在尝试使用 Echo 提供多个文件,但并非每次都有效。 api 代码如下所示:
package main
import (
"github.com/labstack/echo"
"net/http"
)
func main() {
e := echo.New();
e.GET("/", home);
e.File("/data1", "assets/data1.csv");
e.File("/data2", "assets/data2.csv");
e.Logger.Fatal(e.Start(":4243"));
}
func home(c echo.Context) error {
return c.String(http.StatusOK, "Are you lost?");
}
准确地说,它确实适用于第一次文件提取,但随后的任何后续调用(无论是文件提取还是更多 "classic" 调用)都会失败。每个浏览器的错误消息略有不同:
在Chrome中:
SyntaxError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'Bearer {the_entire_content_of_the_first_fetched_file}' is not a valid HTTP header field value.
在 Firefox 中:
SyntaxError: An invalid or illegal string was specified
在 Edge 中,只需:
SyntaxError
尝试激活 CORS,没有任何改变。
看起来与 Postman 配合得很好。可能是我在应用程序中获取数据的方式有问题?
如果您可能需要更多信息,此主题与我之前的主题 (
如果您想从某个目录传送文件。您可以通过以下方式进行:
e.Use(middleware.Static("/path/to/directory"))
或
fs := http.FileServer(http.Dir("/path/to/directory"))
e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/assets/", fs)))
只需添加默认的 CORS 中间件,我只是测试了一下,即使我使用不同的域,它也能正常工作。
从 echo 框架导入这个包:"github.com/labstack/echo/middleware"
并在您的路线之前添加此默认 CORS 配置:
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"*"},
AllowMethods: []string{echo.GET, echo.PUT, echo.POST, echo.DELETE},
}))
哎呀,看来这一直是我的应用程序的错!我的 Echo api 似乎还不错……暂时!
如果有人遇到同样的问题,也许这个