跨域-同源策略

跨域

同源策略(Same origin Policy)

浏览器出于安全考虑,只允许与本域下的接口交互。不同源的客户脚本在没有明确授权的情况下,不能读写对方的资源

  • 发送的请求和当前所在的页面是同一个域下的话,是可以接受的域名,这是浏览器的安全策略

同源指的是什么

修改host的作用

127.0.0.1 a.com
127.0.0.1 b.com

可以浏览器是a.com
端口号是b.com
这样虽然域名不相同,但代表的都是同一个意思

fs.readFile

fs.readFile(path.join(--dirname,pathObj.pathname),function(e,data){
	if(e){		res.writeHead(404,'not found')
	res.end('<h1>404 NOT Found</h1>')
	}else{
		res.end(data)
	}
})

path.join(__dirname,pathObj.pathname)

当前文件夹加上pathname的路径

三种情况

1.请求没有发出去,直接被浏览器拦截住了
2.请求发出去了,服务器没有响应
3.请求发出去了,服务器也响应了,但浏览器收到数据之后发现数据不对,然后被拦截掉了

跨域请求,同源策略

是浏览器的安全策略,符合第三种情况

跨域机制

浏览器不会管你是不是接口,只会关注你是不是同源策略,你不是同源的话

跨域的几种方法

JSONP(JSON with padding)

JSONP是通过 script 标签加载数据的方式去获取数据当做 JS 代码来执行 提前在页面上声明一个函数,函数名通过接口传参的方式传给后台,后台解析到函数名后在原始数据上「包裹」这个函数名,发送给前端。换句话说,JSONP 需要对应接口的后端的配合才能实现。

<script src="http://api.jirengu.com/weather.php"></script>

script可以使用任何网站上对应的文件,通过script返回数据,这个数据会被浏览器发送请求,这个数据

<script src="http://api.jirengu.com/weather.php?callback=showData"></script>

请求到达后端的时候,后端会去解析这个参数获取到字符串showData

<script>
function showData(ret){
console.log(ret);
}
</script>
<script src="http://api.jirengu.com/weather.php?callback=showData"></script>

CORS

跨资源共享
当浏览器使用XMLHttpRequest请求时,浏览器发现该请求不符合同源策略,会给该请求添加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回的结果当中加入一个响应头:Access-Control-Allow-Origin;浏览器判断相应头中是否包含Origin的值,如果有则浏览器会处理响应,我们就应该可以拿到响应数据,如果不包含浏览器则直接驳回,这时我们无法拿到响应数据。

扫描二维码关注公众号,回复: 6052692 查看本文章

不同域下的frame的操作

只有在相同域名下的frame才可以操作frame

可以用不同的域名进行解析

什么是同源策略?

浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户脚本在没有明确授权的情况下,不能读写对方的资源

什么是跨域?列举跨域有几种实现形式

跨域,指的是浏览器不能执行其他网站的脚本。
跨域的几种实现方法:

  1. JSONP
  2. CORS
  3. 降域

JSONP 的原理是什么?

通过script标签加载数据的方式获取数据当作JS代码来执行 提前在页面上声明一个函数,函数通过接口传参的方式传给后台,后台解析到函数名在原始数据上包裹这个函数名,发送给前端

CORS是什么

ajax跨越请求方式
当我们使用XMLHttpRequest时,浏览器在发现该请求不符合同源策略的时候,会给该请求加一个请求头:Origin,后台进行一系列的处理,如果确定接受请求则在返回结果中加入一个响应头: Access-Control-Allow-Origin;浏览器判断该响应头是否包括Origin的值,如果有则浏览器会处理响应,我们就可以拿到响应的数据,如果不包含浏览器则直接驳回,这时候我们也无法拿到响应数据

根据视频里的讲解演示三种以上跨域的解决方式 ,写成博客,讲解并演示任一种跨域的原理

task32

猜你喜欢

转载自blog.csdn.net/KaisonYi/article/details/89646966