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

一文讲通跨域

文章目录

    • 跨域
      • 产生原因
        • what is same origin policy???
        • why same origin policy???
      • 解决方案
        • 避免不同源,静态资源与api部署在同一台服务器
        • CORS(Cross-Origin-Resource-Sharing) - 跨域资源共享
        • 借助node代理服务器(webpack,vite打包部署的底层原理)
        • 借助nginx反向代理
        • others
        • 使用场景
          • 开发 - node代理服务器
          • 部署发布 - nginx反向代理服务器
        • why node server & nginx server???just use same domain & CORS is fine???
          • 1.node代理服务器
          • 2.nginx反向代理服务器
          • 3.安全和流量控制

跨域

跨域是针对浏览器的

产生原因

what is same origin policy???

浏览器的同源策略,一个项目启动后,浏览器会先向静态资源服务器(如CDN服务器)请求页面进行页面渲染,之后根据需要向数据资源服务器(api服务器)请求数据进行数据渲染,在以前使用jsp,asp,php等技术进行统一开发时这俩服务器其实是同一个,那么便不会产生跨域问题,因为它们是同源的。然而随着技术发展,现在一般都采用前后端分离进行项目开发,这时静态资源服务器与api服务器往往是不同源的,这时候便产生了跨域问题。

同源指的是**协议(protocol)、主机地址(host)、端口(port)**都相同

why same origin policy???

限制源与源之间的资源交互,可以作为攻击防护,避免XSS攻击等

解决方案

避免不同源,静态资源与api部署在同一台服务器
CORS(Cross-Origin-Resource-Sharing) - 跨域资源共享
  • 简单请求 配置Access-Control-Allow-Origin
  • 非简单请求 配置Access-Control-Allow-Origin,…
借助node代理服务器(webpack,vite打包部署的底层原理)
  1. 创建代理服务器
  2. 使用http-proxy-middleware中间件
  3. 配置pathRewrite
  4. changeOrigin

webpack配置devServer.proxy

vite配置vite.config.js

Q:那node服务器不会导致浏览器产生跨域问题吗?

A:会的,一般node会与静态资源部署在同一个服务器,也就是使用了避免不同源策略

之后借助node向api服务器获取数据,node作为一个程序,不会产生跨域

借助nginx反向代理

Q:那nginx服务器不会造成浏览器跨域问题吗?

A:也会的,所以会在nginx中采用CORS

others

不推荐

  • jsonp
  • postMessage
  • websocket
使用场景
开发 - node代理服务器
部署发布 - nginx反向代理服务器
why node server & nginx server???just use same domain & CORS is fine???

跨域都要从服务器层面解决,单纯为了解决跨域问题的话实际上就两种方法,一个是静态资源和api部署在同一个服务器,一个是api服务器开启CORS

那么为什么还要node代理服务器和nginx反向代理服务器这两种方法呢?

1.node代理服务器

前后端不分离的不需要说,前后端分离的产生跨域问题可以单纯使用CORS,

开发阶段,前端服务器端口可能不固定,有时常用端口被占用要开新的,需要后端配合改CORS,直接使用node做代理更方便

2.nginx反向代理服务器
  • 上线时,不可能把多个端口直接暴露给外网。
  • 一般用 Nginx 做统一入口:
    • /api 转发到后端服务。
    • / 返回前端静态资源。
    • 对客户端来说就是同一个域名
  • 另外,Nginx 还能做 SSL、缓存、压缩、负载均衡 等。
3.安全和流量控制
  • 代理层可以做请求过滤、限流、黑名单等安全策略。
  • 如果单靠 CORS 或同源部署,就缺少这些额外的保护。

👉 所以总结:

  • 只看跨域:确实冗余。
  • 看真实生产环境:代理层很必要,因为它顺便解决了很多运维、性能和安全问题。
http://www.dtcms.com/a/441840.html

相关文章:

  • CORS、Nginx代理与JSONP方案对比
  • 详细分析 Mosquitto 核心模块 Property_Mosq.c 的功能与 MQTT v5.0 属性管理
  • Docker 资源限制与性能优化(CPU / 内存 / IO 管控实战)
  • 济宁专业建网站知名网站建设商家
  • 爬虫框架: selenium API使用介绍
  • 淄博哪里做网站建设展示类网站的意义
  • NX482NX486美光固态闪存NX507NX508
  • 学校网站模板设计网络服务
  • Git常规应用
  • LeeCode504. 七进制数
  • 计算机网络物理层
  • 2025 最新 Docker 镜像源加速列表与使用指南(10月更新)
  • D3.js简介:用于定制数据可视化的JavaScript库
  • 数据可视化的陷阱:颜色、坐标轴、双轴图的误导性案例
  • 大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKey
  • 基于Python的招聘信息可视化分析系统
  • 深圳网站建设公司平台专业做曝光引流网站
  • LabVIEW超声换能器成像
  • 网站是否降权查询城市建设灯具网站
  • StatefulSet:有状态应用的“定海神针”
  • Go 语言的 panic 和 recover
  • Spring Cloud Netflix Eureka:从微服务基础到高可用集群实战
  • 网站建设 人天价格游戏制作软件免费下载
  • CSP-S2025复赛模拟4补题报告(无AC code)
  • 什么是Agent及其在人工智能中的角色
  • 爱授权系统V3.0免授权版 支持插件和插件商城
  • MySQL 本机压测分析
  • 华清远见25072班C++学习假期10.4作业
  • 建网站学什么软件全国医院的网站建设
  • 【深度学习计算机视觉】09:语义分割和数据集——应用场景与前沿探索