我在go中其实已经写好了corsMiddleware中间件,只需要给每一个请求都套上即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| func main() { booksHandler := &booksHandler{} bookHandler := &bookHandler{} articleHandler := &articleHandler{} registerHandler := ®isterHandler{} loginHandler := &loginHandler{} searchHandler := &searchHandler{} http.Handle("/api/register", registerHandler) http.Handle("/api/login", corsMiddleware(loginHandler)) http.Handle("/api/books", corsMiddleware(authMiddleware(booksHandler))) http.Handle("/api/search/", http.StripPrefix("/api/search", corsMiddleware(authMiddleware(searchHandler)))) http.Handle("/api/book/", http.StripPrefix("/api/book", corsMiddleware(authMiddleware(bookHandler)))) http.Handle("/api/article/", http.StripPrefix("/api/article", corsMiddleware(authMiddleware(articleHandler)))) log.Fatal(http.ListenAndServe(":8089", nil)) }
|
原来问题其实出在了这里/api/article/
以及前端代码中的路径,需要对应才可以
1 2 3 4 5 6 7 8
| const ApiService = { register: (username, password) => api.post("/api/register/", { username, password }), login: (username, password) => api.post("/api/login/", { username, password }), getBooks: (page) => api.get("/api/books/", { params: { page } }), searchBooks: (search_keyword) => api.get("/api/search/", { params: { search_keyword } }), getBookDetails: (book_id) => api.get("/api/book/", { params: { book_id } }), getArticleDetails: (article_id) => api.get("/api/article/", { params: { article_id } }), }
|
本地测试的时候发现前端vue无法根据set-cookie设置cookie 于是各种修改,最后发现应该增加cookie的path和httponly就可以了。