Porxy与跨域连线问题

甚么是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)}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章