Angular 应用解决跨域访问的问题
在前后台分离的应用中,Angular 与 Java 是一对好搭档。但是如果是分开部署应用,则势必会遇到跨域访问的问题。
什么是跨域
启动应用之后,有些浏览器会提示如下告警信息:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
这个是典型的跨域问题。浏览器为了安全考虑,不同的域之间是不能够互相访问的的。
比如,Angular 应用部署在本地的4200端口,而 Java 服务部署在8080端口,他们虽然是同台机子,但仍然是不同的域。Angular 应用视图通过HttpClient 去访问 Java 的 http://localhost:8080/hello 接口是不允许的。
如何解决跨域问题
在知道了什么是跨域之后,解决方案就有多种。
1. 避免跨域
既然,分开部署导致了跨域,那么最简单的方式莫过于避免分开部署,即Angular 与 Java 同时部署到同个 Web 服务器中。
这种方式部署在传统的 Java Web 中非常常见。比如,JSP 应用。
但带来的问题是,水平扩展和性能调优将变得困难,不适合大型互联网应用。
2. 安装支持跨域请求的插件
其实,很多浏览器都提供了允许跨域访问的插件,只需启用这种插件,就能实现在开发环境跨域请求第三方 API 了。
下图展示的是在 Firefox 浏览器中能够实现的跨域访问的插件。
这种方式是最简单,但使用的场景比较受限,一般用于开发环境。
3. 设置反向代理
这种方式是业界最为常用的方式,原理是设置反向代理服务器,让 Angular 应用都访问自己的服务器中的API,而这类API都会被反向代理服务器转发到 Java 服务API中,而这个过程对于 Angular 应用是无感知的。
业界经常是采用 NGINX 服务来承担反向代理的职责。而在 Angular 中,使用反向代理将变得更加简单。在 Angualr 应用的根目录下,添加配置文件proxy.config.json,并填写如下格式内容:
{ "/lite": { "target": "http://localhost:8080", "secure": "false" } }
使用 Angular CLI 启动应用时,只需要执行如下命令即可,非常方法:
ng serve --proxy-config proxy.config.json
这样,当 Angular 要访问http://localhost:4200/lite> 时,会被转发到 Java 的 接口。
参考引用
- 原文同步至https://waylau.com/angular-proxy/
- Angular CLI 常用命令:https://waylau.com/angular-cli-commands/
- Spring 5 开发大全:https://github.com/waylau/spring-5-book
- 跟老卫学Angular:https://github.com/waylau/angular-tutorial
- NGINX 教程:https://github.com/waylau/nginx-tutorial

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
来啃硬骨头——费波纳茨(Fibonacci)矩阵快速幂 c++
全文线索: 解题引出费波纳茨——>费波纳茨递归解法——>费波纳茨动态规划解法——>矩阵快速幂解法 一、来解题 字符串只由'0'和'1'两种字符构成, 当字符串长度为1时,所有可能的字符串为"0"、"1"; 当字符串长度为2时,所有可能的字符串为"00"、"01"、"10"、"11"; 当字符串长度为3时,所有可能的字符串为"000"、"001"、"010"、"011"、"100"、 "101"、"110"、"111" ... 如果某一个字符串中,只要是出现'0'的位置,左边就靠着'1',这样的字符串叫作达 标字符串。 给定一个正数N,返回所有长度为N的字符串中,达标字符串的数量。 比如,N=3,返回3,因为只有"101"、"110"、"111"达标。 思路: 对于位置 i,假定 i 前面是1,则 i 有两种情况 当 i=0 时,i+1位必为1,剩下的就是f(i-2) 当 i=1 时,i+1位可以是1,也可以是0,因此剩下的是f(i-1) 即f(i)=f(i-2)+f(i-1)因此本题可以使用费波纳茨来解。 二、递归解费波纳茨 int process(int i,...
- 下一篇
php分页数据最后一页继续追加第一页数据
之前做数据分页遇到这样一个需求,就是数据到最后一页的时候不能中断,继续把第一页的数据追加到后面,无限显示下去。 原文地址:代码汇个人博客 http://www.codehui.net/info/23.html 一般情况我们写数据分页都是如下代码 //分页码 $page = $_REQUEST['page']; //显示条数 $limit = 10; //分页开始条数 $start_limit = ($page - 1) * $limit; //运行sql语句得到的结果 $list = model('table')->limit("$start_limit, $limit")->findAll(); //返回数据 return $list; 比如我们有102条数据,到了11页的时候就会只有2条数据,显然这不是我们要的结果。如果我们想要第11页数据显示的是最后的2条+第1页的前8条,就不能用这种方法了。 //分页码 $page = $_REQUEST['page']; //显示条数 $limit = 10; //数据总条数 $count = model('table')->...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池