题目1:什么是同源策略?
同源策略,Same-origin policy,浏览器处于安全考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。同源策略的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。
同源必须满足以下3点:
-
同协议:常见协议有http、https、file、ssh、ftp、mailto、tel
-
同端口号:URL默认不写端口,默认端口就是80。注意默认80端口和8080端口是不同的。
题目2:什么是跨域?跨域有几种实现形式
跨域,就是不同域名的接口之间实现交互,包括传输数据,操作DOM元素等资源。
跨域有四种实现形式:
- JSONP
- CORS
- 降域
- postMessage
题目3:JSONP 的原理是什么
JSONP 的原理简单来说就是html中script标签可以引入其他域下的js。利用这个特性,可实现跨域访问接口。
实现流程如下:
-
通过事件触发,前端实现新增script元素。srcipt的src为接口路径。新增script元素的时候,就会默认执行src所指路径,就会向后台发起跨域请求。
-
在前端自定义一个函数,用于获取后台响应返回的数据后,对数据进行具体操作。
-
在后端,对响应请求后返回的数据进行包装。把响应数据转化为JSON格式的字符串,然后再加上与前端自定义函数名称相同的字符串,然后发送这个包装数据给前端。
-
前端在事件触发新增script元素,执行src所指接口路径时,因为返回数据的格式与自定义的函数相同,就会执行自定义的函数内容,实现对数据的具体操作。
题目4:CORS是什么
Cross-Origin Resource Sharing,跨域资源共享,是一种ajax跨域请求资源的方法。
在使用AJAX的基础上,跨域请求时,浏览器会在请求头Request headers加上“origin:发起请求的域名”。在后端代码加上res.header("Accsess-Control-Allow-Origin","*")
或res.header("Accsess-Control-Allow-Origin","具体URL域名")
,这样会让浏览器对任何域名或这个指定的域名发送的请求给予回应。
网友评论