前端跨域问题
3 月,跳不动了?>>> B/S架构的项目中前端经常会遇到跨域问题,什么是跨域问题,常用的解决方法又有哪些呢?可能大多数人对跨域问题都只是一知半解吧。 跨域问题的表现 先来说说那么到底什么是跨域?跨域是指一个域下的文档或脚本去请求另一个域下的资源。跨域问题则是指浏览器出于安全考虑而需要遵循同源策略,限制不同源的网站的文件的执行,同源指的是“协议+域名+端口号”都相同。 如果非同源,如下三种行为会受到限制: 无法获取非同源网页的cookie、localstorage和IndexedDB 无法访问非同源网页的DOM(iframe) 无法向非同源地址发送AJAX请求(可以发送,但浏览器拒绝接受响应) 必须明确以下几点: 跨域问题只存在于浏览器中,而在C/S架构中,如App中是不存在跨域问题的。 浏览器的同源策略并不限制请求的发送,跨域时不同域的服务器是能收到请求的,但浏览器拒绝接受响应,如下图。 那么为什么浏览器才有跨域问题而App不会存在跨域问题呢?很简单,app是自家的,所有的请求都是到自家的服务器,而浏览器是可以访问很多网站的,每个网站都可以带有cookie等信息,如果被其他恶意网站利用,后果不堪设想。 跨域解决方案 跨域的解决方案很多,有如下几种: 常用的方案有: 跨域资源共享(CORS) Nginx代理跨域 JSONP 跨域资源共享CORS CROS全称是跨域资源共享