甚么是proxy? PROXY只是本地端开发用的
proxy类似替换路径,将下述的/api传换为后端需求的http://localhost:8080/ main
甚么是跨域连线
https://blog.csdn.net/huangpb123/article/details/122354830
在本机中,前端与后端的port不能相同,他们个佔用了一个port,但是前端会需要跨域(跨一个port)请求资料
此时就要跨域连线,通常是**本机开发(同网域开发)**才有这个问题
实际作法:有二
3-1 前端修改proxy
在本地端开发时后端API的Domain为http://localhost:8080/ 要打的API为/login
这时候我在本地端开发时,由于前端的预设是http://localhost:8080/ port
=> 理论上我在专案中可以这样做
=> API路径为api/login,proxy配置为 /api 倒转至 http://localhost:8080/
// Vue vite.config.tsexport default defineConfig({ server: { port: 5000, // http://localhost:5000/ proxy: { '/api': { target: 'http://127.0.0.1:8080', // 后端API伺服器domain changeOrigin: true, }, }, },})
// 引用axios层import axios from 'axios';// 创建axiosconst service = axios.create({ // baseURL: '/api', baseURL: '/api', // 在 vite.config.ts 设定了 proxy,所以 baseURL 可以直接设定为 /api timeout: 80000});
3-2 后端可以增加所有网域请求,让本机可以打后端API
// Golang w.Header().Set("Access-Control-Allow-Origin","*") // "*"代表允许所有的网域请求,目前"http://localhost:5000"是前端的网域
// Golang 完整package mainimport ( "net/http")func main() {http.HandleFunc("/aaa", func(w http.ResponseWriter, r *http.Request) {// 设置 CORS 头w.Header().Set("Access-Control-Allow-Origin") // "*"代表允许所有的网域请求,目前"http://localhost:5000"是前端的网域w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, hextoken")// 如果是 OPTIONS 请求,直接返回成功if r.Method == "OPTIONS" {w.WriteHeader(http.StatusOK)return}// 其他的处理代码}) http.ListenAndServe(":8080", nil)}