背景
在前后端分离的应用中,需要使用CORS完成跨域访问。在CORS中发送 非简单请求
时,前端会发一个请求方式为OPTIONS的预请求,前端只有收到服务器对这个OPTIONS请求的正确响应,才会发送正常的请求,否则将抛出跨域相关的错误。
跨域
可实现跨域的方式
- JSONP
- CORS
- Flash
- 服务器中转
比较常用的是 JSONP
和 CORS
,而后者相对前者来说有更方便实用:
JSONP
只能实现GET
请求,而CORS
支持所有类型的HTTP请求。- 使用
CORS
,开发者可以使用普通的XMLHttpRequest
发起请求和获得数据,比起JSONP
有更好的错误处理。
此文暂不介绍jsonp
CORS
CORS
是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS
系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。
使用CORS
的方式非常简单,但是需要同时对前端和服务器端做相应处理。
客户端使用XmlHttpRequest发起Ajax请求,当前绝大部分浏览器已经支持CORS方式,且主流浏览器均提供了对跨域资源共享的支持。
如上所述,接着只需在服务端配置可允许跨域的header即可: