http你不得不知道的那些事(一)--同源策略(2)

上一篇讲到CORS,这篇接着讲,争取在本篇内就把同源策略的内容讲完。
什么是CORSCORS是一个W3C标准,全称是"跨域资源共享"Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制(摘自阮一峰的网络日志)。抓住重点,克服ajax只能同源使用的限制。也就是说ajax刚出来的时候只能同源,
但是大佬们觉得有时候不太方便,然后就出了一个标准,也就有了现在的CORS。这个东西就不展开讲了,感兴趣的小伙伴可以去看看阮一峰的文章,地址为:http://www.ruanyifeng.com/blog/2016/04/cors.html
现在我们接着讲同源策略。讲到这里,我想起了曾经一个小伙伴问过我的问题,为什么我用location.href的方式或者表单提交的方式,服务器可以重定向我的页面到不同的源,但是用ajax请求却不能重定向(即使是同步ajax请求),服务器代码都是同样的啊,为什么??急!!如果这位小伙伴理解了同源策略,
他就能知道为什么了,因为ajax是可以操作服务器返回的内容的,ajax必须遵守同源策略,而其他方式不能,这就是不能使用ajax重定向的原因,就这么简单。此时你会问,如果我这个重定向是同源的或者我设置了CORS,
就不会违反同源策略,是不是就能重定向了。答案是:不能!!惊不惊喜,意不意外。那么会发生什么呢?服务器会直接返回你想要重定向的文档。如果你知道一句话叫ajax可以实现页面的局部刷新,也就不难理解为什么服务器会返回整个文档而不是重定向了。大家可以用nodejs搭建一个简单的web服务器,就能验证这个答案。
讲到这里,按照别人的套路,应该就会写一些如何规避同源策略,具体怎么做。但是我这里只讲原理,不讲细节,如果想看这方面知识的同学可以去看看阮一峰的文章http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html。我觉得他写的文章通俗易懂,特别适合阅读,我这里就不献丑了。
我这里讲最后一个问题,当我们的请求违反同源策略时,这个请求到底发生了什么?请求是否到达服务器?服务器做了什么处理。那么这里我把亲测结果发出来。

服务器返回200 ok 然后response里面啥都没有。控制台的有报错,为下面内容:


上面两张图说明了什么呢?说明了请求发起之后,这时候我们在服务器加上测试代码,很明显能看出代码运行了。说明我们的请求到了服务器,并且服务器给出了200的响应,还给了你完整的内容。所以服务器是没有同源不同源一说的,所有的请求都是同样的处理,只是浏览器把这个响应的内容扔掉了,还告诉你违反了同源策略。如果我们加上CORS代码,发现这个请求和同源时表现一样!以上就是请求过程中具体发生了什么,感兴趣的小伙伴可以自己测试下上面的内容。
以上就是同源策略的全部内容,下一篇讲解网络安全CSRFXSS

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值