在前端项目里,跨域问题通常如何应对?请列举常用的跨域处理手段,并比较各自的优势与不足。
考察说明
考查对跨域机制及常见解决方案的掌握程度,以及权衡不同方案的能力。
回答思路
- 【回答框架 1】跨域由浏览器同源策略引起,限制不同源请求读取响应,但请求本身可能已发送。常见解决方案包括 JSONP、CORS、代理服务器等。
- 【回答框架 2】JSONP 通过 script 标签绕过同源限制,只支持 GET,需后端配合,有安全风险如 XSS。
- 【回答框架 3】CORS 是规范标准,通过后端设置 Access-Control-Allow-Origin 等响应头实现,支持各种方法,需处理预检请求,配置灵活。
- 【回答框架 4】代理方案如开发环境 webpack-dev-server proxy,或 nginx 反向代理,将请求转发到后端,避免浏览器直接跨域,生产环境需相应配置。
- 【回答框架 5】其他如 postMessage、document.domain 等适用于特定场景。选择时需考虑安全、性能和开发成本。
- 【关键点 1】跨域机制由浏览器强制实施,服务端可主动配合。
- 【关键点 2】JSONP 实现简单但仅支持 GET,且需后端返回 callback。
- 【关键点 3】CORS 为标准方案,支持复杂请求,需处理预检与凭证。
- 【关键点 4】代理方案可隐藏后端地址,但增加部署复杂度。
- 【关键点 5】根据生产环境与安全要求选择合适方案。
- 【易错点 1】不要以为跨域请求无法到达服务器,注意非法请求的防护。
- 【易错点 2】CORS 跨域携带 Cookie 时需设置 withCredentials 与具体响应头。
- 【易错点 3】代理配置不当可能泄露内网信息或导致请求路径错误。