位置: IT常识 - 正文

nginx跨域(nginx解决跨域问题原理)

编辑:rootadmin
nginx跨域 1.跨域解释1.1 怎么知道我遇到了跨域问题

推荐整理分享nginx跨域(nginx解决跨域问题原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nginx解决跨域问题原理,nginx解决跨域的常用方案,Nginx跨域,Nginx跨域,Nginx跨域,nginx跨域问题怎么解决,nginx跨域问题怎么解决,nginx跨域设置,内容如对您有帮助,希望把文章链接给更多的朋友!

如果项目没做前后端分离,是不会有跨域问题的。前后端分离的项目中,前端调用后台服务时,报错 No 'Access-Control-Allow-Origin' header is present on the requested resource,你就是遇到了跨域问题。另外,前端调试强烈推荐使用chrome,使用QQ浏览器遇到过跨域访问不了但是不报错的坑爹事件。

1.2 为什么有跨域问题

浏览器的同源策略拒绝了我们的请求。 所谓同源是指,域名,协议,端口相同,浏览器执行一个脚本时同源的脚本才会被执行。如果非同源,那么在请求数据时,浏览器会在控制台中报上面的异常,提示拒绝访问。这是为了同一浏览器打开多个网站时,保护你的A网站登陆信息不被B网站拿去访问A网站,B网站登陆信息同理。

1.3 怎么解决跨域问题

网上的文章对于解决跨域问题的介绍都很详细了。但对于使用Nginx解决跨域大多写的不太详细或者太详细以至于干扰因素太多,看了容易造成误解。这里做个总结。

2.使用nginx解决跨域问题2.1 先明确几个概念首先明确一个概念,前端项目、后端项目、以及nginx,这就是三个server项目,他们只是互相之间交流数据;三个项目都有自己的ip:port组合,哪怕你是在同一台服务器上启动这三个server,他们的port也是不可能有一样的;所以,前端项目,不论访问nginx还是访问后端项目,都会产生跨域问题。2.2 解决跨域问题

以下举例都是项目在同一台机器上,所以IP相同,只以端口区分前端项目(8081)、后端项目(8082)和nginx(8080)。

2.2.1 方法1:在nginx中配置地址重写(或者转发也行)

访问地址以/video_resource开头的都会被这个模块捕获,转发到http://192.168.137.189:8082的后端项目上去。例如此时访问http://192.168.137.189:8080/video_resource/userList/engineer,就会转发到http://192.168.137.189:8082/userList/engineer。访问地址以/js开头的也被这个模块捕获,转发到http://192.168.137.189:8082的前端项目上去。

server{listen 8080;location /resource {rewrite ^/resource/?(.*)$ /$1 break;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://192.168.137.189:8082/; # 转发地址}location /js {rewrite ^/js/?(.*)$ /$1 break;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://192.168.137.189:8081/; # 转发地址}}nginx跨域(nginx解决跨域问题原理)

此时统一通过nginx访问前后端项目,通过/js标识转发到前端项目,通过/resource标识转发到后端项目。浏览器同源策略记录的就是http://192.168.137.189:8080/,浏览器也只访问这个nginx的8080地址,跨域问题也就得到了解决。

2.2.2 方法2:nginx中添加允许跨域请求头server{listen 8080;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requested-With;add_header Access-Control-Allow-Methods GET,POST,OPTIONS;location /resource {rewrite ^/resource/?(.*)$ /$1 break;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://192.168.137.189:8082/; # 转发地址}}

这就和不用nginx,直接在后端项目中(tomcat或者自己写的服务端代码)配置允许跨域一样,只不过把允许跨域的配置放在nginx中,这个配置解决了前端项目访问nginx的跨域问题,而nginx访问后端项目不存在跨域问题(不是浏览器,没有同源策略限制)。此时nginx对于后端就相当于一个代理分发服务器。

3.参数解释3.1 Access-Control-Allow-Origin服务器默认是不被允许跨域的。给Nginx服务器配置`Access-Control-Allow-Origin *`后,表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求。3.2 Access-Control-Allow-Headers 是为了防止出现以下错误:

Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

这个错误表示当前请求Content-Type的值不被支持。其实是我们发起了”application/json”的类型请求导致的。这里涉及到一个概念:预检请求(preflight request),请看下面”预检请求”的介绍。

3.3 Access-Control-Allow-Methods 是为了防止出现以下错误:

Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

3.4 给OPTIONS 添加 204的返回,是为了处理在发送POST请求时Nginx依然拒绝访问的错误

发送”预检请求”时,需要用到方法 OPTIONS ,所以服务器需要允许该方法。

4.总结

浏览器的同源策略只记录他访问对象的ip和port,访问其他资源如果还是这个ip:port,就不存在跨域问题,如果不是这个ip:port,就用nginx讲这个ip:port转发到要访问的ip:port,让他仍然访问这个同源策略的ip:port。

参考文献:

https://www.jianshu.com/p/1080014a234f

https://segmentfault.com/a/1190000012550346

本文链接地址:https://www.jiuchutong.com/zhishi/299410.html 转载请保留说明!

上一篇:React 面向组件编程(上)(react组件定义)

下一篇:修改Vue项目运行的IP和端口(怎么调试vue项目)

  • 华为智能门锁能写nfc卡吗(华为智能门锁能不能远程开锁)

    华为智能门锁能写nfc卡吗(华为智能门锁能不能远程开锁)

  • 腾讯会议如何分屏(腾讯会议如何分享文件)

    腾讯会议如何分屏(腾讯会议如何分享文件)

  • 手机用什么播放rmvb文件(手机用什么播放器看视频)

    手机用什么播放rmvb文件(手机用什么播放器看视频)

  • 固态硬盘安装后显示弹出(固态硬盘安装后蓝屏)

    固态硬盘安装后显示弹出(固态硬盘安装后蓝屏)

  • 微信解绑手机号还能用吗(微信解绑手机号最新方法)

    微信解绑手机号还能用吗(微信解绑手机号最新方法)

  • 手机上怎么调照片尺寸(手机上怎么调照片格式jpg)

    手机上怎么调照片尺寸(手机上怎么调照片格式jpg)

  • 路由器的灯一直是红色的,连接不上网络(路由器的灯一直亮)

    路由器的灯一直是红色的,连接不上网络(路由器的灯一直亮)

  • 华为手机照相功能怎么没有了(华为手机照相功能能把文件校正吗)

    华为手机照相功能怎么没有了(华为手机照相功能能把文件校正吗)

  • 抖音消息界面怎么变了(抖音消息界面怎么换主题颜色)

    抖音消息界面怎么变了(抖音消息界面怎么换主题颜色)

  • g71程序怎么编程(g71程序怎么编程程序段号不对)

    g71程序怎么编程(g71程序怎么编程程序段号不对)

  • 对方拒收消息是拉黑了还是删除了(对方拒收消息是拉黑吗但是可以看见朋友圈)

    对方拒收消息是拉黑了还是删除了(对方拒收消息是拉黑吗但是可以看见朋友圈)

  • x23强制重启(x23强制重启方法)

    x23强制重启(x23强制重启方法)

  • 卡方检验与t检验的区别(卡方检验与t检验和f检验的区别)

    卡方检验与t检验的区别(卡方检验与t检验和f检验的区别)

  • 抖音里的小心心可以换钱吗(抖音里的小心心多少钱)

    抖音里的小心心可以换钱吗(抖音里的小心心多少钱)

  • 华为手机键盘没有了怎么办(华为手机键盘没有了)

    华为手机键盘没有了怎么办(华为手机键盘没有了)

  • 怎么关闭快手共同好友(怎么关闭快手共享通讯录好友)

    怎么关闭快手共同好友(怎么关闭快手共享通讯录好友)

  • 华为Mate尺寸是多少(华为mate系列屏幕尺寸)

    华为Mate尺寸是多少(华为mate系列屏幕尺寸)

  • 苹果11是玻璃后壳吗(苹果11是玻璃后屏吗)

    苹果11是玻璃后壳吗(苹果11是玻璃后屏吗)

  • 怎么知道airpods充电盒是否充满(怎么知道airpods被别人用了)

    怎么知道airpods充电盒是否充满(怎么知道airpods被别人用了)

  • 华为平板m5能插u盘吗(华为平板m5能插卡吗)

    华为平板m5能插u盘吗(华为平板m5能插卡吗)

  • 快手评论上限多久恢复(快手评论多少条才算上限)

    快手评论上限多久恢复(快手评论多少条才算上限)

  • 云原生数据库是什么(云原生关系型数据库polardb)

    云原生数据库是什么(云原生关系型数据库polardb)

  • id格式怎么写(qq邮箱苹果id格式怎么写)

    id格式怎么写(qq邮箱苹果id格式怎么写)

  • 京东购物怎么取消订单(京东购物怎么取消白条支付)

    京东购物怎么取消订单(京东购物怎么取消白条支付)

  • 淘宝超级会员是永久吗(淘宝超级会员是免费的吗)

    淘宝超级会员是永久吗(淘宝超级会员是免费的吗)

  • b612没保存怎么找回(b612没保存的视频还能找回吗)

    b612没保存怎么找回(b612没保存的视频还能找回吗)

  • 华为p30设置返回键(华为p30设置返回键怎么设置)

    华为p30设置返回键(华为p30设置返回键怎么设置)

  • 小米6卡顿怎么解决(小米6卡顿怎么回事)

    小米6卡顿怎么解决(小米6卡顿怎么回事)

  • 一加7pro用的什么系统(一加7pro是)

    一加7pro用的什么系统(一加7pro是)

  • dede后台左侧菜单空白或不显示的解决办法(完美解决)

    dede后台左侧菜单空白或不显示的解决办法(完美解决)

  • 小微企业减半征收印花税代码
  • 汇算清缴期间费用填表说明
  • 向个人提供居住证明
  • 小规模企业税收优惠政策2023
  • 非货币资产交换和债务重组的区别
  • 水电费分析小报
  • 注册资本为0的企业
  • 公司与公司之间借款需要交税吗
  • 购买完货物又退回怎么办
  • 开票与实际收款不一致有什么风险
  • 服务费可以不退吗
  • 社会保险基金管理局是干什么的
  • 税控盘维护费是普票能全额抵扣吗
  • 印花税计入税金及附加什么时候开始
  • 个人付款可以开发票吗
  • 个体工商户上月开发票超额了 ,定额改查账征收了
  • 增值税普通发票需要交税吗
  • 源泉扣缴税率是多少
  • 2021税收分类编码大全
  • 劳务公司的税率是多少经营模式
  • 增值税附加税什么情况交
  • 工商年报报表
  • 以前年度损益调整贷方余额表示什么
  • 一年期电子银行承兑汇票
  • 短期借款的明细科目是什么
  • 公司的资本成本取决于投资人的必要报酬率
  • 分公司是否需要章程
  • 小规模租赁收入申报流程
  • 收到退回的土地使用税分录怎么做
  • 存贷款利率计算器
  • 公司取得的发明专利
  • linux系统中怎么创建目录
  • 发生坏账账务处理
  • php require的用法
  • 港田路凤凰城
  • php常见面试题
  • 非货币性资产投资特殊性税务处理
  • novelai本地部署电脑要求
  • vue3.0用法
  • web前端基础是什么
  • php上传文件限制大小
  • php命令大全
  • python获取字符串中汉字的个数
  • 先款还是先票
  • 其他应收款其他应付款的风险
  • 缴纳社保记账凭证附件
  • vj刷题
  • 进项税额转出忘记申报咋办
  • 主营业务税金及附加包括增值税吗
  • 小微企业买商品房怎么买
  • 税务异常怎么处理要多长时间
  • 管理费用冲减其他应付款分录
  • 商铺固定设施指哪些
  • 开出银行承兑汇票一张,面值30000元,用于抵付
  • 税控盘减免税款分录
  • 权益净利率如何分析
  • 材料成本多少合适
  • 贷记坏账准备借记什么
  • 企业经营状态为清算是什么意思
  • 发票抵扣联要放在凭证里面吗
  • 附条件的行政行为有哪些
  • 物流行业货币资金占比
  • 哪个是win8.1更新win10的补丁
  • bios各项参数的意义
  • 永恒之塔改注册表什么意思
  • centos新建终端快捷键
  • 远程文件管理器
  • win8怎么关电脑
  • centos n1
  • win8系统怎么关机
  • win8系统打不开exe
  • ghost参数设置
  • 本科生面试的自我介绍
  • unity3d总结
  • android ui开发
  • unity基于什么语言
  • 怎么运用知识点
  • 查博士报告怎么查真假
  • 浙江省税务局领导介绍
  • 股东向公司借款合法吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设