我尝试使用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?");
}
准确地说,它确实适用于第一个文件提取,但随后对任何后续调用(无论是文件提取还是更多"经典"调用)都会失败。每个浏览器的错误消息都有所不同:
在Chrome中:
SyntaxError:无法执行' setRequestHeader' on' XMLHttpRequest':' Bearer {the_entire_content_of_the_first_fetched_file}'不是有效的HTTP标头字段值。
在Firefox中:
SyntaxError:指定了无效或非法字符串
在Edge中,只需:
的SyntaxError
尝试激活CORS,没有任何改变。
看起来与Postman相处得很好。也许这是我在应用程序中获取数据的问题?
如果您需要更多信息,这个帖子与我之前的帖子(Vuejs with axios request in vuex store: can't make more than one request, why?)直接相关,但我不想混淆它们,因为我不知道但如果我在我的Vue代码或我的Echo代码中弄错了......
答案 0 :(得分:0)
如果您想从某个目录传送文件。您可以采取以下方式:
e.Use(middleware.Static("/path/to/directory"))
OR
fs := http.FileServer(http.Dir("/path/to/directory"))
e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/assets/", fs)))
答案 1 :(得分:0)
只需添加默认的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},
}))
答案 2 :(得分:0)
Welp,似乎一直是我的应用程序的错!我的Echo api似乎很好......现在!
如果有人遇到同样的问题,也许这个Vuejs with axios request in vuex store: can't make more than one request, why?会有所帮助。