常见面试题之跨域请求资源

本周给大家分享的某厂面试题是关于跨域请求的,对于学过或者是已经工作的小伙伴来说,对“跨域”这个概念已经不陌生了,那么接下来我们直接就切入主题,来聊聊跨域的几种方式:1、通过jsonp跨域script标签的src属性可以跨域引用文件,jsonp是请求之后后台包装好一段json,并且把数据放在一个callback函数,返回一个js文件,动态引入这个文件,下载完成js之后,会去调用这个callback,通过这样访问数据。在浏览器端定义一个回调函数,并将函数名通过src传至服务器端;服务器端将数据包装成为一段js数据,并返回js函数格式的js文件,接着拿到这个js文件之后函数自动调用,拿到后端返回的数据。2、跨域资源共享(CORS)普通跨域请求:只服务端设置Access-Control-Allow-Origin即可,前端无须设置,若要带cookie请求:前后端都需要设置。需注意的是:由于同源策略的限制,所读取的cookie为跨域请求接口所在域的cookie,而非当前页。如果想实现当前页cookie的写入,在nginx反向代理中设置proxy_cookie_domain和八、NodeJs中间件代理中cookieDomainRewrite参数的设置。目前,所有浏览器都支持该功能(IE8+:IE8/9需要使用XDomainRequest对象来支持CORS)),CORS也已经成为主流的跨域解决方案3、nginx代理跨域跨域原理:同源策略是浏览器的安全策略,不是HTTP协议的一部分。服务器端调用HTTP接口只是使用HTTP协议,不会执行JS脚本,不需要同源策略,也就不存在跨越问题。实现思路:通过nginx配置一个代理服务器(域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域登录。4、WebSocket协议跨域WebSocketprotocol是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,同时允许跨域通讯,允许服务器端主动向浏览器端发送消息除了上面的4中外,还有几种可以参考的方式,具体使用可以根据实际情况来进行选型:5、document.domain+iframe跨域6、location.hash+iframe7、window.name+iframe跨域8、postMessage跨域


转载请注明:http://www.aierlanlan.com/rzfs/8459.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了