MST

星途 面试题库

面试题:Angular中解决HTTP请求跨域问题常用的一种方法及原理

在Angular项目中,经常会遇到HTTP请求跨域的问题。请阐述一种常用的解决跨域问题的方法,并解释其背后的原理。
24.9万 热度难度
前端开发Angular

知识考点

AI 面试

面试题答案

一键面试

常用解决方法:使用代理服务器

在Angular项目中,可以通过配置代理服务器来解决跨域问题。通常在项目根目录下创建一个proxy.conf.json文件(文件名可自定义),内容示例如下:

{
  "/api": {
    "target": "http://example.com",
    "secure": false,
    "changeOrigin": true
  }
}

这里/api是本地代理的路径前缀,target是实际请求的目标服务器地址。然后在启动Angular项目时,使用ng serve --proxy-config proxy.conf.json命令,这样所有以/api开头的请求都会被代理到http://example.com,从而绕过浏览器的跨域限制。

原理

浏览器的同源策略限制了从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。跨域请求会被浏览器阻止。使用代理服务器时,Angular应用本地发出的请求实际上是先发给本地的代理服务器,这个请求是同域的,不违反同源策略。代理服务器再将请求转发到目标服务器,并把目标服务器的响应返回给Angular应用。对浏览器来说,整个过程就如同是从同一个域获取数据,从而解决了跨域问题。