在 Axios 前端到 Golang 后端的 CORS 问题中,可以通过设置 Golang 后端的响应头来解决。以下是一个示例代码:
前端代码:
import axios from 'axios';
axios.get('http://example.com/api/data')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
后端代码:
package main
import (
"fmt"
"net/http"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
r.HandleFunc("/api/data", getData).Methods("GET")
http.Handle("/", r)
fmt.Println("Server is listening on port 8080")
http.ListenAndServe(":8080", nil)
}
func getData(w http.ResponseWriter, r *http.Request) {
// 设置响应头,允许跨域请求
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET")
// 处理请求
// ...
// 返回数据
fmt.Fprintf(w, "Data from server")
}
在上面的示例中,Access-Control-Allow-Origin 响应头被设置为 *,表示允许来自任何域的跨域请求。如果你想限制只允许特定的域进行跨域请求,可以将 * 替换为特定的域名。
Access-Control-Allow-Methods 响应头指定允许的HTTP请求方法,这里只设置为 GET,如果后端还支持其他HTTP方法,可以添加到该头中。
这样设置后,就可以解决 Axios 前端到 Golang 后端的 CORS 问题。