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

nginx反向代理解决跨域问题

跨域:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 。

下表格为前后端分离的域名,技术信息:

 域名服务器使用技术
前端http://b.yynf.comnginxvue框架
后端apihttp://api.yynf.comnginxphp

 

 

 

 

 

两种方式解决跨域的问题:

解决方法一:

在php入口index.php文件加入header头代码,允许访问解决了js调用api跨域的问题。

    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With,api-key");
    header("Access-Control-Allow-Method: GET, POST, OPTIONS, HEAD");
    header("Access-Control-Allow-Credentials: true");

 

解决方法二:

使用nginx的反向代理解决跨域:

api的nginx配置不需要改变只需要改变前端的服务器的nginx配置即可:

    location /apis {
            rewrite  ^.+apis/?(.*)$ /$1 break;
            include  uwsgi_params;
            proxy_pass  http://api.yynf.com;
    }
 
proxy_pass  url地址

 

让nginx监控/apis目录(这里自己定义只要跟nginx配置中保持一致即可),如果发现了这个目录就将所有请求代理到http://api.yynf.com这个请求中,当然也需要在js调用api的请求中多加一层请求结构:

 

 前端代码中js请求地址
旧的js请求api的地址http://api.yynf.com/badmin/user/add
新的js请求api的地址http://api.yynf.com/apis/badmin/user/add

 

 

 

 

这样一来访问页面就会发现前端代码调用api地址都转向了http://api.yynf.com/apis/,利用将请求通过服务器内部代理实现了跨域问题。

 

代理解决跨域的优点:

1.有效的隐藏实际api的请求地址和服务器的ip地址
2.各司其职让前后端更方便管理,个自搭建自己的服务器保持一定的规范即可。

 

 

 

 

转载于:https://www.cnblogs.com/lisqiong/p/9923923.html

相关文章:

  • 云架构师进阶攻略
  • 辗转相除法求最大公约数(c++)
  • Customize Acrylic Brush in UWP Applications(在UWP中自定义亚克力笔刷)
  • Java 基础拾遗
  • Docker Swarm 介绍 or 工作原理
  • go学习笔记-错误处理
  • python中各种数据类型
  • Going Deeper with Convolutions阅读摘要
  • layui的table的使用 三
  • js this
  • $NOIp2018$劝退记
  • 汇编语言实验一
  • 深入理解java虚拟机(六)字节码指令简介
  • 蛇形矩阵
  • oracle查看执行最慢与查询次数最多的sql语句
  • Angular 2 DI - IoC DI - 1
  • leetcode讲解--894. All Possible Full Binary Trees
  • Netty源码解析1-Buffer
  • Node + FFmpeg 实现Canvas动画导出视频
  • React中的“虫洞”——Context
  • Vue 2.3、2.4 知识点小结
  • Windows Containers 大冒险: 容器网络
  • 当SetTimeout遇到了字符串
  • 开源SQL-on-Hadoop系统一览
  • 鱼骨图 - 如何绘制?
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #考研#计算机文化知识1(局域网及网络互联)
  • $refs 、$nextTic、动态组件、name的使用
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (原創) 未来三学期想要修的课 (日記)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)可以带来幸福的一本书
  • ****Linux下Mysql的安装和配置
  • .form文件_一篇文章学会文件上传
  • .Net Remoting常用部署结构
  • .net wcf memory gates checking failed
  • .NET 材料检测系统崩溃分析
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET命名规范和开发约定
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • ::什么意思
  • @property @synthesize @dynamic 及相关属性作用探究
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ IO.File ] FileSystemWatcher
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [Angular] 笔记 21:@ViewChild
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测