-
跨域访问方法介绍(9)--nginx 反向代理
Nginx (engine x) 是一个高性能的HTTP 和反向代理web服务器,同时也提供了 IMAP/POP3/SMTP 服务。本文主要介绍使用 Nginx 反向代理来实现跨域请求,文中所使用到的软件版本:Nginx 1.21.0、Spring Boot 2.4.4、jdk1.8.0_181。
1、思路
在前后端分离的项目里,可以把前端项目部到 Nginx 里面,通过 Ajax 访问后台接口。如果通过 Ajax 直接访问后端接口会形成跨域请求,如果不能或不想使用 JSONP 或 CORS 来解决跨域问题,可以使用 Nginx 的反向代理来解决跨域问题。Ajax 不直接请求后端接口,而是请求 Nginx 的一个 URL,该 URL 配置反向代理到后端服务。
2、样例
在 http://localhost:8080/a.html 中 访问 http://localhost:8081/test/getStudents 接口。
2.1、后台 Contoller
package com.abc.demo.controller; import com.abc.demo.entity.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RequestMapping("/test") @Controller public class TestController { @ResponseBody @RequestMapping("/getStudents") public R<List<Map<String, String>>> getStudents() { List<Map<String, String>> result = new ArrayList<>(); Map<String, String> map = new HashMap<>(); map.put("name", "李白"); map.put("age", "20"); result.add(map); map = new HashMap<>(); map.put("name", "杜甫"); map.put("age", "21"); result.add(map); return R.ok(result); } }
2.2、Nginx 配置
server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /test { proxy_pass http://localhost:8081/test; } ...
2.3、页面(a.html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>test</title> </head> <body> </body> <script type="text/javascript" src="./jquery-1.12.4.min.js"></script> <script type="text/javascript"> $(function(){ $.ajax({ url: 'http://localhost:8080/test/getStudents', //如果这里设为http://localhost:8081/test/getStudents,会报跨域错误 type: 'post', dataType: 'json', contentType: 'application/json', data: { }, success: function(resp) { alert(JSON.stringify(resp)); } }); }); </script> </html>
2.4、测试
把 a.html 放到 Nginx(端口:8080) 的 html 目录下,驱动后端 SpringBoot(端口:8081) 应用。
来源:https://www.cnblogs.com/wuyongyin/p/14870166.html
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比