首页 > 其他分享 >Angular 应用解决跨域访问的问题

Angular 应用解决跨域访问的问题

时间:2023-06-04 12:04:58浏览次数:49  
标签:Java 跨域 访问 应用 http Angular localhost


在前后台分离的应用中,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 浏览器中能够实现的跨域访问的插件。

Angular 应用解决跨域访问的问题_跨域

这种方式是最简单,但使用的场景比较受限,一般用于开发环境。

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 的 http://localhost:8080/lite 接口。

参考引用


标签:Java,跨域,访问,应用,http,Angular,localhost
From: https://blog.51cto.com/u_9427273/6410310

相关文章

  • property 用于以访问属性的方式调用函数
    property是Python内置的功能,常用来修饰类方法,用于以访问属性的方式调用函数。描述符对象为了能够实现访问属性就调用某个函数,这里将利用描述符对象作为本文的实现起点,当某个类定义了__get__方法后,通过其方法名称可以直接调用__get__proptery主要依赖于描述符的机制。p......
  • 跨域资源共享 CORS
    概述如果需要在前端与不同域的后端进行通信,可以在后端配置CORS,允许指定的域名访问后端资源。开始通过配置合适的响应头,可以明确指定允许的来源域、请求方法和头部信息。Node.jsapp.all('*',function(req,res,next){res.header("Access-Control-Allow-Origin","*");......
  • 解读静态资源的访问
    1. 发起的请求是由哪些服务器程序处理的。33浏览器输入以下地址http://localhost:8080/ch05_url_pattern/index.jsp :tomcat(jsp会转为servlet)http://localhost:8080/ch05_url_pattern/js/jquery-3.4.1.js : tomcathttp://localhost:8080/ch05_url_pattern/images/p1.jpg : tomca......
  • windows访问k8s
    windows访问ekspods安装AWSCLI网址为https://awscli.amazonaws.com/AWSCLIV2.msi。查看aws版本。aws--version配置AWSCLI凭证eksctl和AWSCLI均要求您在环境中配置AWS凭证。awsconfigure命令是设置安装以供一般使用的最快方法。$awsconfigureAWSAccessKeyID[N......
  • 代理IP技术解加强网络隐私和绕过访问限制的有效工具
      代理IP是一种常用的网络工具,旨在加强用户的隐私保护并绕过访问限制。本文将对代理IP的工作原理、类型以及应用领域进行深入解析,帮助读者更好地了解并利用这一技术。一、代理IP的工作原理代理IP的基本原理是通过转发网络请求和响应来隐藏用户的真实IP地址。当用户通过代理服......
  • 2023-06-02 用户访问cgi-bin/test-cgi时会泄露远端服务器名
    问题描述:百度智能云给我发了一条短信,说是我的服务器有个cgi安全漏洞:用户访问cgi-bin/test-cgi时会泄露远端服务器名,服务器地址等敏感信息,黑客可以利用获得的敏感信息执行下一步的攻击操作。我以前部署阿里云怎么就没这个问题?难道是宝塔的问题??现在我的服务器是用宝塔管理的,至......
  • 系统调用——本质:多个进程都需要访问系统资源,为了更好的管理这些资源
    在现代操作系统里,由于系统资源可能同时被多个应用程序访问,如果不加保护,那各个应用程序之间可能会产生冲突,对于恶意应用程序更可能导致系统奔溃。这里所说的系统资源包括文件、网络、各种硬件设备等。比如要操作文件必须借助操作系统提供的api(比如linux下的fopen) 在电脑中,系统调用(......
  • vue解决跨域方法
    什么是跨域  跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。这里列举一个经典的列子:#协议跨域http://a.baidu.com访问https://a.baidu.com;#端口跨域http://a.baidu.com:8080访问http://a.baidu.com:80;#域......
  • Angular Google Charts教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介GoogleCharts是一个纯粹的基于JavaScript的图表库,旨在通过添加交互式图表功能来增强Web应用程序.它支持各种图表.在Chrome,Firefox,Safari,InternetExplorer(IE)等标准浏览器中使用SVG绘制图表.在传统的IE6中,VML用于绘制图形.AngularGoogleCharts是一个基于开源角度......
  • Android中实现ContentResolver对系统中所有联系人的访问
    一、实现方法思路:朝着实验要求和目的去想,要想访问系统中的联系人,可以利用ContentResolver类来访问,使用ContentResolver类可以访问别的应用程序通过ContentProvider提供的数据,这里可以用Android系统提供的标准的ContentProvider来对手机联系人进行访问。还有要想实现长......