先写一个发送跨域请求的页面index.html

<html>
<head><title></title>
</head>
<body><button onclick="sendAjax()">sendAjax</button><script type="text/javascript">var sendAjax = () => {var xhr = new XMLHttpRequest();xhr.open('GET', '/api/getList', true);xhr.send();xhr.onreadystatechange = function (e) {if (xhr.readyState == 4 && xhr.status == 200) {console.log(xhr.responseText);}};}</script>
</body>
</html>

同时node开启一个端口号为666的服务,提供api/getList的接口

const http = require('http');
const fs = require('fs');
const url = require('url');const server = http.createServer(function (req, res) {if (req.url === '/favicon.ico') {return;}const parseUrl = url.parse(req.url, true);console.log('parseUrl', parseUrl.pathname)if (parseUrl.pathname === '/api/getInfo') {const list = {'name': 1, 'age': 2}res.writeHead(200, {'content-Type':'text/html;charset=UTF-8'})  res.end(JSON.stringify(list))}else {res.write(`port: 666`)res.end()}
});server.listen(666, function () {console.log('server is starting on port 666');
});

在conf/nginx.conf中开启一个端口号为8888的服务

server {listen 8888;server_name localhost;location / {root D:/mydoc/front_end/requiredCodeSorting;index index.html;}
}

访问localhost:8888,就可以访问到前面写的页面index.html

点击按钮,发送ajax请求

出现跨域,因为端口号不同

继续配置nginx.conf,对不同的资源请求,指向到对应地址。同样的,将静态资源指向本机服务,将接口指向真正的服务器

server {listen 8888;server_name localhost;location / {root D:/mydoc/front_end/requiredCodeSorting;index index.html;}# 跨域请求location /api/ {proxy_pass http://127.0.0.1:666;}}

添加跨域请求的处理

修改index.html里的请求路径为/api/getInfo

重启服务,可以顺利拿到数据,解决了跨域

参考链接:

利用 Nginx 反向代理解决跨域问题

nginx反向代理解决跨域

这里通过nginx反向代理解决跨域的方式,在web项目的开发阶段和生产阶段都是可以解决跨域问题的

vue中通过webpack-dev-server开启本地服务器实现的代理proxyTable,跟这个nginx反向代理的原理应该差不多。它代理所有请求,从浏览器到服务器,变成浏览器到本地服务器到跨域服务器,从而解决的跨域问题。生产环境里,除非所服务器端渲染,否则不会也不应该起一个本地服务器,所以开发环境下的跨域处理,在生产环境下是不生效的。

参考:https://www.zhihu.com/question/410240698/answer/1366334226

据说,上线后的跨域处理由后端大佬处理,通过cors解决还是nginx反向代理解决呢?咱也不清楚

通过nginx反向代理解决跨域相关推荐

  1. 利用nginx 反向代理解决跨域问题

    利用nginx 反向代理解决跨域问题 参考文章: (1)利用nginx 反向代理解决跨域问题 (2)https://www.cnblogs.com/hpx2020/p/9928175.html 备忘一 ...

  2. nginx反向代理解决跨域问题,使本地调试更方便

    nginx反向代理解决跨域问题,使本地调试更方便 参考文章: (1)nginx反向代理解决跨域问题,使本地调试更方便 (2)https://www.cnblogs.com/gwf93/p/102951 ...

  3. nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题

    在前面写的一篇文章SpringMVC解决跨域问题,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式 ...

  4. Nginx 反向代理解决跨域问题

    目录 前言 Nginx 反向代理常用配置 Server location proxy_pass add_header OPTIONS 请求 proxy_set_header 跨域的 cookie 传输 ...

  5. Nginx反向代理解决跨域问题(个人学习总结)

    一.理解Nginx Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并 ...

  6. 【Nginx反向代理解决跨域】

    跨域 写在前面 当今互联网行业,大部分Web项目基本都是采用的前后端分离模式.前端为H5项目,后端为Java.PHP.Python等项目.而且大部分后端服务并不会只部署一套服务,而是会采用Nginx对 ...

  7. webstorm前端使用Nginx 反向代理解决跨域问题

    1.webstorm设置端口 2. 3. 4. 5. 把项目放到nginx安装目录的html文件夹下: 6. 配置nginx.conf文件 server {listen 8090; #监听端口serv ...

  8. nginx反向代理解决跨域请求问题

    1.出现跨域的表现: 项目的前端调用后台接口时候,会报错: No 'Access-Control-Allow-Origin' header is present on the requested re ...

  9. Nginx 方向代理解决跨域问题-2

    概述 在浏览器端进行 Ajax 请求时会出现跨域问题,那么什么是跨域,如何解决跨域呢?先看浏览器端出现跨域问题的现象,如下图所示 什么是跨域问题? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览 ...

最新文章

  1. centos让yum自动选择最快的源
  2. libgdx学习记录18——Box2d物理引擎
  3. Scalability Tradeoffs: Why “The Ethereum
  4. 雅虎中国,奇虎全面杀入威客领域
  5. POJ 1639 Picnic Planning:最小度限制生成树
  6. 智能一代云平台(二):一些事儿!
  7. NVIDIA 修复 GPU 驱动中的多个代码执行缺陷
  8. VR 、AR 谁让你眼前一亮
  9. Builder(生成器)
  10. 解扩matlab,(完整版)BPSK调制的MATLAB仿真
  11. android风格ppt模板下载,PPT模板大全app下载
  12. 全国地区+邮编的数据库脚本
  13. arduino声音传感器与二极管_如何将声音传感器与Arduino连接 并实现继电器控制项目...
  14. 超时用集群脚本ync.sh、xcall.sh
  15. oracle导出报错04063,导出报错:ORA-04063:packagebody“DMSYS.DBMS_DM_MODEL_EXP”hase
  16. jq获取页面高度_使用jquery中height()方法获取各种高度
  17. Python报错:pymysql.err.IntegrityError: (1062, “Duplicate entry ‘1‘ for key ‘PRIMARY‘“)
  18. 校招----中信银行一面面经
  19. cv2报错:Problematic frame:  C  [cv2.cpython-36m-x86_64-linux-gnu.so+0xcd0696]
  20. Qt OpenGL(二十八)——Qt OpenGL 核心模式-绘制一个正方体(正六面体)

热门文章

  1. 干货素材|UI设计中的字体样式的应用
  2. 戴尔t140服务器价格型号,戴尔_PowerEdge T140塔式服务器_企业服务器_网络存储服务器 | Dell 中国大陆...
  3. java 网络实验_20145220 实验五 Java网络编程
  4. vue 表格中有列需要异步加载_Vue中使用async/await解决异步请求问题
  5. GetCommandLineW()作用
  6. cusparseScsrsv_analysis函数导致内存暴涨问题
  7. Linux网络协议栈:用eBPF写TCP拥塞控制算法
  8. cgroups(7)— Linux中文手册页
  9. 进程间同步的几种方法
  10. 一个Linux驱动:Simple - REALLY simple memory mapping demonstration.