跨域问题
跨域(Cross-Origin)是指浏览器从一个域名的网页去请求另一个域名的资源,当协议、域名或端口三者中任意一个不同时,即构成跨域访问
1. 同源策略(Same-Origin Policy)
定义:浏览器安全机制,限制不同源之间的资源共享。
同源条件:协议(如 http/https)、域名、端口必须完全相同。
示例:同源:http://example.com:8080 与 http://example.com:8080
跨域:http://example.com 与 https://example.com(协议不同)或 http://example.com 与 http://api.example.com(域名不同)或者端口不同。
2. 跨域资源共享(CORS)
- 作用:通过服务器设置特定HTTP响应头(如
Access-Control-Allow-Origin),允许指定源站跨域访问资源。 - 预检请求(Preflight):复杂跨域请求(如带自定义头或
POST请求)会先发送OPTIONS请求验证权限
3. 跨域实现方式
-
Nginx配置:通过添加CORS头(如
Access-Control-Allow-Origin)和正确处理OPTIONS请求实现跨域
4. 安全与限制
- 风险:跨域可能引发数据泄露(如Cookie劫持),需严格限制允许的源站1。
- 限制:协议和端口导致的跨域问题需后端解决,前端无法绕过
比如我负责了一个后端项目:新的域名是b.com,而前端管理页面通过web浏览器的去访问的域名是a.com,开发或者管理员会通过浏览器的
a.com域名的管理页面去访问b.com的后端接口,这就涉及到了跨域问题。
而我的b.com的域名服务是通过nginx进行转发配置的,所以ng解决跨域问题的配置可以参考如下(前后端分离项目跨域问题解决的ng配置):

路漫漫其修远兮

浙公网安备 33010602011771号