面试题答案
一键面试常用解决方法:使用代理服务器
在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应用。对浏览器来说,整个过程就如同是从同一个域获取数据,从而解决了跨域问题。