美文网首页
web开发基础 - 同源策略

web开发基础 - 同源策略

作者: 澜昕 | 来源:发表于2018-09-24 11:16 被阅读0次

前段时间解决公司web站搭建问题时,发现自己对于web开发的一些简单的概念都不太了解,虽然现在移动开发比较热门,但还是需要补习下web开发的基础知识,这篇文章就是对于同源策略的一个学习体会。

同源策略是浏览器的一个安全功能,即不同源的客户端脚本不允许读写对方的资源。这里的资源常见的有cookie、DOM,Ajax请求也只能发送给同源的网址。那什么是同源?简单的来说源包括三个要素:协议、域名和端口号,如果三个要素都完全相同,则被称为同源。这里顺便说一下域名,一般情况域名中含有几个“.”就是几级域名,com、cn、net、org又可以称为顶级域名。一级域名,比如baidu.com就是一个一级域名,一般需要购买,再搭建一个DNS服务器并注册到互联网后,就可以在后面再增加二级、三级域名了。例如:www.baidu.com是一个二级域名,baidu.com是一级域名,www是该域名下主机名。

但是也有一些特殊情况不会去限制同源,例如<script>、<img>、<iframe>标签一级表单POST提交,下文的某些解决方案就是利用了这一点,这里暂不展开。既然同源是一种安全限制,上述的特殊情况也会被攻击利用,比如XSS全站脚本攻击就是利用了这个漏洞。

非同源的访问被成为跨域访问,有三种方式可以规避这个限制,下面会一一详述:

一、Nginx反向代理

架设一个nginx同源服务器,浏览器都去请求该nginx服务器,nginx根据不同的目录去请求真正的服务器地址。优点是可以不用目标服务器配合,需要搭建一个中转的nginx服务器,本质上就是一个代理服务器用于转发请求。

二、JSONP

这种方式利用了浏览器对于<script>标签中的src不进行同源策略的限制来实现,实现原理是:网页通过添加一个<script>元素,向服务器请求json数据,服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。JSONP的优点是可以支持老版本的浏览器,缺点是只能支持GET请求,并且需要服务端在返回结果中增加回调函数。

三、CORS

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),但并不是所有的浏览器版本都支持CORS的。该方案需要在客户端和服务器都增加支持,它的处理方法如下:当向跨域服务器发送XMLHttpRequest请求时,浏览器发现请求不符合同源策略,会给该请求加一个请求头“origin”,服务器如果确定接收该请求,则会在在返回结果中增加一个响应头“Access-Control-Allow-Origin”,值可以是“*”,也可以是请求头“origin”的值。默认情况下CORS请求不发送Cookie和HTTP认证信息,如果需要把Cookie发送到服务器,则要指定请求头“Access-Control-Allow-Credentials”的值为true,不过这时响应头“Access-Control-Allow-Origin”的值不可以为“*”。另外,如果还需要发送自定义头信息,需要设置请求头“Access-Control-Allow-Headers”,它的值为一个逗号分隔的字符串,包括所有的自定义头名称。

相关文章

  • web开发基础 - 同源策略

    前段时间解决公司web站搭建问题时,发现自己对于web开发的一些简单的概念都不太了解,虽然现在移动开发比较热门,但...

  • 从同源策略到跨域方法

    参考阮一峰老师的文章 同源策略 1.同源策略: 是一种约定,是浏览器最基础的安全策略.web是构建在同源策略基础上...

  • 白帽子讲web安全

    浏览器安全 同源策略 同源策略是web安全的核心基础。影响源的因素有:host、子域名、端口、协议。 a.com通...

  • 前端笔记(14)web网页安全

    同源策略 同源策略是web页面安全中心最基础、最核心的安全策略。 如果两个URL的协议、域名和端口都相同,我们就称...

  • web安全 题目汇总 2019-06-16

    web安全题目汇总 点击Web安全(超全的)链接进入 Domain 解释一下同源策略 同源策略,那些东西是同源可以...

  • ajax-2-同源策略&跨域

    同源策略 URL:协议+域名+端口+路径 同源:协议+域名+端口 相同 为什么需要同源策略:保证Web安全 什...

  • Web前端看点。黑客利用的这些基本知识

    一,Web安全的关键点 1.同源策略是众多安全策略的一个,是Web层面上的策略。很重要。 2.同源策略规定:不同域...

  • JSONP_跨域

    1、同源策略 同源策略是众多的安全策略之一,是在web层面上的策略。同源策略规定:不同域的客户端脚本在没有明确授权...

  • Nginx 跨域设置(CORS)

    浏览器同源策略 同源策略是Web应用程序安全模型中的一个重要概念。根据该策略,Web浏览器允许第一个Web页面中包...

  • 前端面试题 同源策略 跨域

    一,同源策略SOP Daytwo 端口,域名,协议 必须同时相同。NetScape提出的安全策略,Web构建在同源...

网友评论

      本文标题:web开发基础 - 同源策略

      本文链接:https://www.haomeiwen.com/subject/camcoftx.html