跨域 Ajax 请求是在浏览器中请求另一个域名下的接口。由于浏览器遵循同源策略的规定,跨域请求被限制。所以跨域 Ajax 请求需要特殊处理。以下是保护接口的一些方法:
-
CORS(跨源资源共享):在服务端设置响应头Access-Control-Allow-Origin,指定允许跨域的域名或通配符。浏览器在发送请求时会携带自定义头部“Origin”,服务端需要对该头部进行验证。如果验证通过,则返回响应头“Access-Control-Allow-Origin”。
-
JSONP(JSON Padding):通过script标签加载一个脚本文件,该文件返回的是一个函数调用,函数参数是需要返回的数据。由于script标签没有跨域限制,所以可以使用该方法进行跨域请求。
-
代理:在服务端进行代理请求,客户端发送请求时发送至本服器,服务器再转发至目标服务器,并将数据返回给客户端。由于代理是在服务器内部进行的,所以不存在跨域问题,可以避免跨域请求的安全问题。
-
WebSocket:通过 WebSocket 协议建立连接,实现跨域通信,避免跨域请求受到安全问题的影响。 WebSocket 连接只需要在建立时进行跨域验证,后续的通信不再受跨域限制。
需要注意的是所有的跨域方式都需要双方的接口支持,且需要保证接口的安全性。