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

跨域问题(CORS)

文章目录

  • 介绍
  • 解决
    • 一、添加跨域头,允许跨域
      • 1.后端配置CORS策略(4种方法)
      • 2.配置nginx
    • 二、代理

介绍

跨域资源共享(CORS, Cross-Origin Resource Sharing)是浏览器的一个安全机制,用来防止来自一个域的网页对另一个域下的资源进行请求。仅允许向 同域名同端口 的服务器发送请求。
对于前后端分离的项目,往往会有跨域问题。

解决

一、添加跨域头,允许跨域

1.后端配置CORS策略(4种方法)

浏览器检测到跨域请求时,会先发送一个预检请求(OPTIONS)给后端服务器,若后端配置了CORS策略,即返回允许的 CORS 头(如 Access-Control-Allow-Origin)来告诉浏览器它允许跨域请求。如果服务器未返回这些头,浏览器将阻止实际请求。如果预检请求成功,浏览器将继续发送实际的请求。如果服务器的响应中没有正确的 CORS 头,浏览器同样会阻止实际请求的返回数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.配置nginx

#跨域配置
location /api {add_header 'Access-Control-Allow-Origin' $http_origin;add_header 'Access-Control-Allow-Credentials' 'true';add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers '*';if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Origin' $http_origin;add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain; charset=utf-8';add_header 'Content-Length' 0;return 204;}
}

二、代理

代理的原理是,由于CORS检测只会在客户端进行,只需要前端的请求也是同域名同端口即可,前端发送请求到代理服务器,这个代理服务器和前端服务器的域名和端口一致,不会触发CORS,然后代理服务器再将请求转发给后端服务器即可。

开发环境: 前端使用代理,简化开发过程中的跨域问题。
代理的实质是转发请求,前端请求到代理时浏览器会认为是同源,不会触发跨域限制,之后代理服务器再将请求转发给后端服务器。
比如proxy.ts文件里的
在这里插入图片描述

生产环境:
可使用Nginx或其他反向代理服务器

location /api {proxy_pass http://127.0.0.1:8080;
}
http://www.lryc.cn/news/435104.html

相关文章:

  • 评测AI写毕业论文软件排行榜前十名的网站
  • 发邮件格式
  • 解锁Web3.0——Scaffold-eth打造以太坊DApp的终极指南
  • 机器学习之监督学习(四)决策树和随机森林
  • Sky Takeaway
  • JavaScript 模板字符串
  • 模拟new关键字时产生的问题,求解答!
  • SpringBoot2:请求处理原理分析-接口参数解析原理(argumentResolvers)
  • java实现文本相似度计算
  • 基于无人机边沿相关 ------- IBUS、SBUS协议和PPM信号
  • django学习入门系列之第十点《A 案例: 员工管理系统4》
  • 【2024】Math-Shepherd:无需人工注释即可逐步验证和强化法学硕士。
  • [苍穹外卖]-08微信支付详解
  • 教你五句在酒桌上和领导说的话语
  • 景联文科技:专业图像采集服务,助力智能图像分析
  • QT QTcpSocket作为客户端
  • 【系统架构设计师-2023年】综合知识-答案及详解
  • 树莓派3B点灯(1)-- 四种方法
  • Android解析XML格式数据
  • 数学建模笔记—— 灰色关联分析[GRA]
  • ICM20948 DMP代码详解(13)
  • 【论软件需求获取方法及其应用】
  • 使用ESP8266和OLED屏幕实现一个小型电脑性能监控
  • Nexpose v6.6.266 for Linux Windows - 漏洞扫描
  • ess6新特性
  • C语言蓝桥杯:语言基础
  • axure之变量
  • vue缓存用法
  • 栈入门,括号匹配问题
  • Vue入门学习笔记-表单