同源策略

ajax

自作多情 提交于 2020-02-14 20:48:00
前言 我们使用php动态渲染页面时,有很多比较麻烦的地方。 在前端写好页面以后,需要后台进行修改,意味这后端程序员也需要懂前端的知识,其实渲染的工作应该交给前端来做。 前端没有写好页面的话,后端无法开始工作,需要等待前端的页面完成之后才能开始工作,拖延项目的进度。 这种渲染,属于同步渲染,先获取数据, 如果数据获取的慢了, 会严重影响整个页面渲染速度, 且数据更新需要页面刷新 【演示:同步渲染】 http 协议回顾 HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和服务器之间互相通信的规则 HTTP协议规定了 请求 和 响应 的标准 请求与请求报文 get请求的请求报文详解 //--------------------------请求行-------------------------------- // GET 请求方式 // /day02/01.php?username=pp&password=123456 请求路径+参数(注意点) // HTTP/1.1 HTTP的版本号 GET /day02/01.php?username=pp&password=123456 HTTP/1.1 //--------------------------请求头--------------------------------

同源策略和跨域

痴心易碎 提交于 2020-02-04 08:20:24
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。 两个页面,域名 协议 端口都相同。表示同源 受前面所讲的浏览器同源策略的影响,不是同源的脚本不能操作其他源下面的对象。想要操作另一个源下的对象是就需要跨域。 跨域:受前面所讲的浏览器同源策略的影响,不是同源的脚本不能操作其他源下面的对象。想要操作另一个源下的对象是就需要跨域。 JSONP跨域:利用script标签里的src属性,载入一个动态执行的js脚本。 JSONP跨域的优点: 兼容性好。 无需XMLHttpRequest。 JSONP跨域的缺点: 只能发送get请求。 使用JSONP跨域,只要是个网站都可以拿到b.com里的数据,存在安全性问题。需要网站双方商议基础token的身份验证,这里不详述。 可能被注入恶意代码,篡改页面内容,可以采用字符串过滤来规避此问题。 会继续回来补充的.... 来源: https://www.cnblogs.com/JiAyInNnNn/p/10967971.html

浏览器同源策略和跨域请求

懵懂的女人 提交于 2020-02-04 07:12:30
浏览器同源策略 同源:如果两个页面拥有相同的协议(如http,https等),端口(80,443)和域名(www.happyjava.cn),那么这两个页面就属于同一个源。 同源策略:浏览器的一套安全机制,这些安全机制都以同源为限制条件。同源策略,隔离了不同源网站的cookie,拦截不同源的请求,只允许同源网站的脚本运行,保证了web网站的安全。 如果没有同源策略,当你打开银行网站,同时又打开了另外一个恶意网站。这时,恶意网站就有能力修改你这个网站的dom,使你后续发送的请求都发送到恶意网站的服务器上,然后恶意网站就能获取到你的cookie等信息,将会对个人的隐私财产构成巨大的威胁。 同源策略的缺点和权衡 如果严格的遵循同源策略,也会面临很多的问题。比如,图片,css,js等都得从同域名网站下去获取,个人网站,小网站这样是没问题的。但是对于用户量很大的网站,显然对服务器的压力将会很大,图片等大文件都会占用服务器的带宽。 不要安全不行,不要性能也不行。在安全和性能上的考虑,使得现代浏览器在安全性和可用性之间选择了一个平衡。所以,现在的浏览器,对于一些资源标签,都开了后门权限。比如,img script style等标签,都允许垮域引用资源,严格说这都是不符合同源要求的。 跨域请求 了解了浏览器的同源策略之后,可以接着谈谈跨域请求的问题了。因为同源策略的存在

跨域——同源策略(译)

烂漫一生 提交于 2020-02-04 06:41:18
为什么需要跨域? 因为有同源策略。 同源策略 是一种非常重要的安全机制,约束(限制)一个源的文档或者脚本如何与另一个源的资源进行交互。有助于隔离恶意文档,减少可能的攻击。 源 如果两个URL具有相同的protocol,相同的port(如果有)以及相同的host,就说它们具有相同的源 如下表格是与如下URL对比的结果: http://store.company.com/dir/page.html : IE浏览器的例外 可信任区:如果两个域都处于高度可信任区(企业内部网),将不会有同源限制。 端口:IE在检查于时并不考虑port。下面两个URL被当做同源: https://company.com:81/index.html 和 https://company.com/index.html 改变源 虽然有一定限制,页面可以通过document.domain来改变自己源。可以通过脚本修改document.domain到自身当前的域或者当前域的超域。 例如,在 http://store.company.com/dir/other.html 运行如下脚本: document.domain = "company.com" 之后,这个页面就可以通过 http://company.com/dir/page.html 页面的同源检查。 但是,company.com不能够修改document

XSS中的同源策略和跨域问题

旧巷老猫 提交于 2020-02-04 06:38:28
转自 https://www.cnblogs.com/chaoyuehedy/p/5556557.html 1 同源策略 所谓同源策略,指的是浏览器对不同源的脚本或者文本的访问方式进行的限制。比如源a的js不能读取或设置引入的源b的元素属性。 那么先定义下什么是同源,所谓同源,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可。 可以看下面的几个示例来更加清楚的了解一下同源的概念: URL1 URL2 说明 是否允许通信 http://www.foo.com/js/a.js http://www.foo.com/js/b.js 协议、域名、端口都相同 允许 http://www.foo.com/js/a.js http://www.foo.com:8888/js/b.js 协议、域名相同,端口不同 不允许 https://www.foo.com/js/a.js http://www.foo.com/js/b.js 主机、域名相同,协议不同 不允许 http://www.foo.com/js/a.js http://www.bar.com/js/b.js 协议、端口相同,域名不同 不允许 http://www.foo.com/js/a.js http://foo.com/js/b.js 协议、端口相同,主域名相同,子域名不同 不允许

同源策略以及绕过此限制的方法

孤街浪徒 提交于 2020-02-04 06:36:00
同源策略 源:由协议【https、http】+域名【a.com】+端口【80、443】组成,(ie中略有不同),同源策略是浏览器的核心安全策略,目的是将来自不同源的资源进行隔离,并控制不同源资源间的通信,从而减少安全威胁,增强安全性。 跨域中的一些限制以及不限制内容如下: 不限制内容: 脚本文件 js 图片资源 样式资源css iframe展示其他的的资源 a链接访问其他资源 多媒体等资源 form表单提交 限制内容: 跨域的方法【get、post可以】 跨域请求头不可以添加自定义头部 本地文件系统读写 iframe可以访问iframe整体,不能访问内容 cookie的限制,使用CORS需要withCredentials=true才可以带上cookie ======================================================== 一、同源策略 1、何为同源? 所谓"同源"指的两个网页url的三个部分是相同的: http://www.example.com:80/dir/page.html 协议相同 域名相同 端口相同 2、同源策略 同源策略是Web应用程序安全模型中的一个重要概念,它由 Netscape 公司在1995年引入浏览器。该策略最初是为保护DOM的访问而设计的,Web浏览器允许第一个Web页面中包含的脚本访问第二个Web页面中的数据

同源策略以及跨域的解决方案

大憨熊 提交于 2020-02-04 06:34:06
源(origin)就是协议、域名和端口号 同源策略 是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。 跨域: 受前面所讲的浏览器同源策略的影响,不是同源的脚本不能操作其他源下面的对象。想要操作另一个源下的对象是就需要跨域。 跨域的实现形式     • 降域 document.domain     同源策略认为域和子域属于不同的域,如:     child1.a.com 与 a.com,     child1.a.com 与 child2.a.com,     xxx.child1.a.com 与 child1.a.com     两两不同源,可以通过设置 document.damain='a.com',浏览器就会认为它们都是同一个源。想要实现以上任意两个页面之间的通信,两个页面必须都 设置documen.damain='a.com'。     此方式的特点:       1. 只能在父域名与子域名之间使用,且将 xxx.child1.a.com域名设置为a.com后,不能再设置成child1.a.com。       2. 存在安全性问题,当一个站点被攻击后,另一个站点会引起安全漏洞。       3. 这种方法只适用于 Cookie 和 iframe 窗口。   •

JS篇 同源策略、CORS、XSS、SessionCookie

女生的网名这么多〃 提交于 2020-01-21 03:27:07
同源策略: 如何引用: (iFrame指的是iframe DOM节点) 1. 引用iframe的window对象:iFrame.contentWindow 2. 引用iframe的document对象:iFrame.contentDocument,或者:iFrame.contentWindow.document 示例: 两个页面,前者页面中嵌入iframe,src指向后者: 1. test.nuomi.com/link1.vm 2. nuomi.com/link2.vm; 同源要求:Protocols, domains, and ports均相同 子域名不同的两个站:test.nuomi.com, nuomi.com,如果要通信, 都 必须设置为统一的域名:document.domain=nuomi.com; 即使其中一个已经是域名:nuomi.com,仍然需要 明确调用 :document.domain=nuomi.com; document.domain设值: 1. 只能是当前域名的suffix,否则报错:Uncaught SecurityError: Failed to set the 'domain' property on 'Document': 'test' is not a suffix of 'test.nuomi.com'. 2. 设值为com也会报错:'com'

跨域解决方案

眉间皱痕 提交于 2020-01-20 01:07:13
跨域问题是受制于浏览器的同源策略。 同源策略:是指在进行ajax,或者是页面上有frameset标签的时候,要求用户在浏览器中输入的url地址中,要访问的数据,域名(ip地址),端口号必须一样,如果不一样会认为是跨域。 解决跨域问题: 要求:springmvc4.2以上 版本。在需要跨域访问的类上加上@crossORign注解 来源: CSDN 作者: 丨许晨丨 链接: https://blog.csdn.net/Mrxuchen/article/details/104036789

浏览器(内核,同源策略原理,渲染...)

元气小坏坏 提交于 2020-01-19 02:37:30
浏览器存储 特点 cookie localStorage sessionStorage indexDb 生命周期 可过期 除非清理,否则一直存在 页面关闭就清理 除非清理,否则一直存在 存储大小 4K 5M 5M ∞ 与服务端通信 请求携带在 header 头部 no no no 浏览器内核 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”。 通常所谓的浏览器内核也就是浏览器所采用的渲染引擎 浏览器内核主要包括三个分支技术: 排版渲染引擎 、 JavaScript引擎 , 以及其他 。 Trident IE 内核 其中 IE8 的 JavaScript 引擎是 JScript 引擎, IE9 开始使用 Chakra Gecko FF 内核 JavaScript 引擎使用 Spider Monkey 第一款 JavaScript 引擎 Webkit Safari 内核 Chrome 内核原型 Android 默认浏览器使用 Webkit 内核 Blink Chrome 最新的内核(Safari 目前也使用的内核) 而谷歌方面,则使用了自己研发的 V8 引擎 内核 是否开源 插件支持 应用浏览器 支持操作系统 Trident 否,但提供接口调用 ActiveX IE Windows Gecko 是