MST

星途 面试题库

面试题:JavaScript中常见的跨域解决方案有哪些

在JavaScript Web编程中,跨域问题较为常见。请阐述至少三种常见的跨域解决方案,并简要说明其原理和适用场景。
35.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

1. JSONP

  • 原理:利用<script>标签没有跨域限制的特性,通过动态创建<script>标签,将数据以回调函数参数的形式返回。服务端返回的数据格式形如callbackName(data),前端事先定义好callbackName函数来处理数据。
  • 适用场景:适用于简单的GET请求场景,主要用于前后端数据交互,比如获取第三方API数据,且只支持GET请求。

2. CORS(跨域资源共享)

  • 原理:服务端设置响应头,允许特定来源的请求访问资源。例如设置Access - Control - Allow - Origin响应头指定允许访问的源,可以是具体的域名,也可以设为*表示允许所有源访问。浏览器根据这些响应头信息判断是否允许跨域请求。
  • 适用场景:现代浏览器普遍支持,适用于大多数复杂的跨域请求场景,包括各种HTTP请求方法(GET、POST等),常用于前后端分离项目,由后端进行配置。

3. 代理服务器

  • 原理:在同源服务器上搭建一个代理服务,前端将跨域请求发送到代理服务器,代理服务器再将请求转发到目标服务器,并将响应返回给前端。这样对于浏览器来说,请求是在同源内进行的。
  • 适用场景:适用于前后端都可控制的场景,例如在开发环境中,通过webpack-dev-server的代理功能实现跨域,方便开发调试。也适用于对安全性要求较高,不希望前端直接暴露给第三方服务的场景。