go 跨域问题解决
datehoer 7/25/2023 教程go
我在go中其实已经写好了corsMiddleware
中间件,只需要给每一个请求都套上即可。
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))
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
原来问题其实出在了这里/api/article/
以及前端代码中的路径,需要对应才可以
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 } }),
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
本地测试的时候发现前端vue无法根据set-cookie设置cookie 于是各种修改,最后发现应该增加cookie的path和httponly就可以了。