位置: 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项目)

  • 华为matebook14s电池容量是多大(华为matebook14s电池容量多少毫安)

    华为matebook14s电池容量是多大(华为matebook14s电池容量多少毫安)

  • 苹果13画中画怎么用(苹果13画中画怎么操作)

    苹果13画中画怎么用(苹果13画中画怎么操作)

  • 在微信里建的群怎么找不到了(在微信里建的群怎么删除)

    在微信里建的群怎么找不到了(在微信里建的群怎么删除)

  • 编译错误是什么意思(编译错误属于异常吗)

    编译错误是什么意思(编译错误属于异常吗)

  • 晓黑板直播可以看到学生吗(晓黑板怎么看直播)

    晓黑板直播可以看到学生吗(晓黑板怎么看直播)

  • 华为mate30电池可以用几个小时(华为mate30电池可以换吗)

    华为mate30电池可以用几个小时(华为mate30电池可以换吗)

  • ctrl d是什么快捷键(ctrl d快捷键)

    ctrl d是什么快捷键(ctrl d快捷键)

  • 有限的访问权限怎么回事(有限的访问权限无线网络无法连接)

    有限的访问权限怎么回事(有限的访问权限无线网络无法连接)

  • iphone经常跳出开机导航(苹果手机自动跳出)

    iphone经常跳出开机导航(苹果手机自动跳出)

  • VIVOX6手机未知来源在哪设置(vivo手机未知来源在哪里设置)

    VIVOX6手机未知来源在哪设置(vivo手机未知来源在哪里设置)

  • 收付款怎么加好友(收款方如何加付款方微信)

    收付款怎么加好友(收款方如何加付款方微信)

  • 微信打招呼一天多少次(微信打招呼一天最多可以几个人?)

    微信打招呼一天多少次(微信打招呼一天最多可以几个人?)

  • 最小生成树和最短路径的区别(最小生成树和最小支撑树)

    最小生成树和最短路径的区别(最小生成树和最小支撑树)

  • 小米内存不足如何调整(小米内存不足如何扩容)

    小米内存不足如何调整(小米内存不足如何扩容)

  • excel激活要钱吗(excel激活是什么意思)

    excel激活要钱吗(excel激活是什么意思)

  • 快手加入黑名单后对方能看见作品吗(快手加入黑名单关系会解除吗)

    快手加入黑名单后对方能看见作品吗(快手加入黑名单关系会解除吗)

  • 笔记本声音大嗡嗡响是怎么回事(笔记本声音大嗡嗡响需要清灰吗)

    笔记本声音大嗡嗡响是怎么回事(笔记本声音大嗡嗡响需要清灰吗)

  • 小米8一碰指纹就亮屏(小米8指纹失灵重启好了是咋回事)

    小米8一碰指纹就亮屏(小米8指纹失灵重启好了是咋回事)

  • 笔记本显卡和台式机显卡区别(笔记本显卡和台式机显卡性能对比)

    笔记本显卡和台式机显卡区别(笔记本显卡和台式机显卡性能对比)

  • 腾讯大王卡能用拼多多吗(腾讯大王卡能用的软件)

    腾讯大王卡能用拼多多吗(腾讯大王卡能用的软件)

  • xs死机怎么重启(xsmax死机无法开机)

    xs死机怎么重启(xsmax死机无法开机)

  • 大众点评视频能保存吗(大众点评视频能放多少秒的)

    大众点评视频能保存吗(大众点评视频能放多少秒的)

  • 845和855相差多少(845和855区别大吗)

    845和855相差多少(845和855区别大吗)

  • 拼多多震动提示怎么关(拼多多一直震动)

    拼多多震动提示怎么关(拼多多一直震动)

  • word在图片上编辑文字(word在图片上编辑文字后怎么使其不动)

    word在图片上编辑文字(word在图片上编辑文字后怎么使其不动)

  • 业务架构图(人工智能业务架构图)

    业务架构图(人工智能业务架构图)

  • 简易征收预缴税率怎么算
  • 手机个人所得税app下载官网
  • 进项发票已认证,发现发票有问题怎么办
  • 耕地占用税退税政策
  • 小规模免税收入账务处理
  • 税金及附加与应交税费的差额
  • 发票替代票
  • 政府奖励收入要交企业所得税么
  • 收到投资款如何写凭证
  • 递延所得税资产和负债怎么计算
  • 增值税专用发票电子版
  • 单位缴纳的社保在哪里查询
  • 用党费返还款购置资产应如何账务处理?
  • 内部损益表
  • 专项应付款如何核算
  • 企业收取客户利润违法吗
  • 本月征期2021
  • 固定资产交换的账务处理
  • 汇总纳税总机构企业所得税分摊比例备案
  • 长投抵消三步法
  • 去年红字发票怎么做账
  • 地税退税怎么做分录
  • 收到外币货款账务处理
  • 小规模纳税人企业所得税优惠政策最新2023
  • 12306打不开怎么回事苹果手机
  • win8系统怎么关闭防火墙
  • win10 删除文件 没有找到项目
  • 出租房子收入计入什么科目
  • 退回多扣的社保费给员工,怎样做会计分录?
  • uniapp异常处理
  • 如何设置win10电脑开机不黑屏
  • PHP:xml_parser_get_option()的用法_XML解析器函数
  • php反序列化pop链
  • Windows10如何禁止电脑自动安装软件
  • 未付款的增值税发票可以抵扣吗
  • 关于javascript
  • 为什么不能零申报
  • vue下载安装
  • 房屋折旧方法有哪些
  • 简易计税结转账务处理
  • 普通发票还要交增值税吗
  • python 动态
  • 个体工商户有固话吗
  • 公司的一项专利多少钱
  • 专项应付款能转出来吗
  • 织梦系统网站搭建教程
  • 买轿车产生的服务费用
  • 应收票据贴现的实收金额一定小于票据面值
  • 列入固定资产的标准
  • 劳务报酬支出怎么算
  • 失控发票补交上年所得税
  • 影视公司临时演员怎么办
  • 资产负债表金额的来源一般是
  • 售后回租租赁合同买车有效吗
  • 人工费没有发票怎么办
  • 公司买茶具帐务处理流程
  • 软件公司购买软件用于研发
  • 销售边角废料取名怎么取
  • mysql注入语句
  • debian系统
  • linux命令大全详解
  • windows资源管理器被结束进程了怎么办
  • 中国有多少台百万机组
  • win10mobile官网
  • 如何修改excel数据显示格式
  • 超人飞车助手下载安装
  • perl 哈希用法
  • js函数重名
  • 如何解决焦虑的心理
  • jquery实现页面切换
  • 批处理应用实例
  • linux共享内存最大值
  • 查询同一网段下的其他ip
  • 用js实现类的方法
  • jqueryif判断
  • 广州车辆购置税官网
  • 江苏省电子税务局电话
  • 集美区区委书记什么级别
  • 山东省准生证是什么样子图片
  • 郑州房子契税退税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设