当前位置: 首页 > news >正文

前端处理跨域的4种方式

跨域

跨域介绍

浏览器出于安全考虑,做了同源策略限制,浏览器会拒绝跨域请求。

同源策略

请求的时候,拥有相同的协议、域名、端口,只要有一个不同都属于跨域。

解决跨域

JSONP

通过 script 标签中的 src 不受同源策略的限制,可以实现跨域请求数据。
只能通过 get 请求。

客户端
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><script>const request = (callbackName) => {const script = document.createElement("script");script.src = `http://127.0.0.1:3000/api/user/list?callback=${callbackName}`;document.body.appendChild(script);return new Promise((resolve, resject) => {window[callbackName] = (res) => {resolve(res);};});};request(`callback${new Date().getTime()}`).then((res) => {console.log(res);});</script></body>
</html>
服务端
import express from "express";const app = express();app.get("/api/user/list", (req, res) => {const { callback } = req.query;res.send(`${callback}(${JSON.stringify([{id: 1001,name: "alex",age: 23,},])})`);
});
app.listen(3000, () => {console.log("server running");
});

DEV 使用代理(前端)

使用vite配置反向代理

import { defineConfig } from "vite";export default defineConfig({server:{proxy:{'/api':{target:'http://127.0.0.1:3000',changeOrigin:true}}}
})

设置请求头(后端)

只需要开启允许跨域

import express from "express";const app  = express();app.get('/api/role/list',(req,res)=>{res.setHeader('Access-Control-Allow-Origin','*');res.setHeader('Access-Control-Allow-Origin','协议+指定IP地址+端口')
})
app.listen(3000,()=>{console.log('server running')
})

nginx

server{listen 192.168.67.100:80;server_name  www.pc.com;root    /apps/nginx/html/pc;location  / {proxy_pass http://192.168.67.101;
}
http://www.dtcms.com/a/263871.html

相关文章:

  • uniapp+vue写小程序页面,实现一张图片默认放大后,可以在容器内上下左右拖动查看
  • JavaScript 安装使用教程
  • Web3区块链有哪些岗位?
  • 141.在 Vue 3 中使用 OpenLayers Link 交互:把地图中心点 / 缩放级别 / 旋转角度实时写进 URL,并同步解析显示
  • 【MyBatis保姆级教程下】万字XML进阶实战:配置指南与深度解析
  • python高级变量VIII
  • 转录组分析流程(四):Cox+Lasso筛选预后基因
  • JVM内存模型与垃圾回收机制分析
  • 【java链式调用流操作】
  • Python实现NuScenes数据集可视化:从3D边界框到2D图像的投影原理与实践
  • mac部署dify
  • 笔记/计算机网络
  • 【数据结构】 排序算法
  • beego打包发布到Centos系统及国产麒麟系统完整教程
  • 【文件读取】open | with | as
  • 实体类JavaBean
  • 到底什么是“数字化”?数字化的本质是什么?
  • 从输入到路径:AI赋能的地图语义解析与可视化探索之旅(2025技术全景)
  • 边截图边操作?试试 Snipaste 的浮动贴图功能
  • adc模数转换器
  • Gartner《Choosing Event Brokers to Support Event-DrivenArchitecture》心得
  • OSE3.【Linux】练习:编写进度条及pv命令项目中的进度条函数
  • Postman - API 调试与开发工具 - 标准使用流程
  • 搜索与回溯算法(基础算法)
  • 华为交换机堆叠与集群技术深度解析附带脚本
  • Golang的并发编程实践总结
  • 【pathlib 】Python pathlib 库教程
  • 成都芯谷金融中心文化科技园:打造区域科技活力
  • nginx配置websocket
  • 用java,把12.25.pdf从最后一个点分割,得到pdf