一.要理解浏览器的同源策略,首先要理解http的请求过程。
1.浏览器收到用户输入的url,如www.baidu.com
2.浏览器根据域名去DNS服务器查找对应的服务器ip
3.浏览器与服务器上的80端口建立tcp连接
4.浏览器将http请求报文发给服务器
5.服务器接收请求,将html文件以响应报文的形式发给浏览器
6.浏览器接收到响应报文,解析其中的html文件,渲染。如果html文件中有引用其他资源,如
<script type="text/javascript" src="www.test.com/a.js"/>,浏览器会再发出一个独立的请求,去请求其他资源。
详细内容见《http权威指南》
二.然后是cookie的传输和修改
cookie存在于浏览器的文件中,每次浏览器向服务器发送http请求的时候,比如请求www.baidu.com,浏览器就会找到域名www.baidu.com对应的cookie值,把这些值放在http请求头里,发送给服务器端。然后我们可以在服务器调用api来获得,修改cookie,当服务端给浏览器发送响应报文时,会将修改过的cookie放在http响应头里,发送给浏览器。
三.同源策略
1.cookie,在发送http请求时,浏览器默认只会将相同域名下的cookie值发送给服务器,关于子域名的方面的设置可以参考网络上的信息,在js代码中,也只能获得和修改该js所在窗口的域名的cookie值。
2.ajax,在发送异步http请求时,也只能发送给相同域名的服务器,跨域ajax其实不是原生ajax,用的是另外的技术,后面再看。
3.页面有框架的情况,比如A域名的页面total.html里有一个FRAMESET,这个FRAMESET里有三个FRAME,域名分别是A,B,C,分别是a.html,b.html,c.html。那么total.html可以访问a.html中的具体元素,比如函数,dom对象,b.html与c.html互不能访问,b.html与total.html也互不能访问。
四.同源策略的同源
同源是指,域名,协议,端口相同,域名是指document对象的domain属性
五.常用的越过同源策略的方法
1.跨域ajax
原理在于,对资源文件的加载是不受同源策略影响的,比如
<script type="text/javascript" src="test.com/checkUser.js?name=test"/>
这会导致浏览器去请求checkUser.js?name=test然后把结果当作javascript放在当前页面中执行。具体可以在百度上搜jsonp
2.如果有2个frame在一个页面中,他们主域名相同,而子域名不同的,可以通过设计document.domain来解决。比如mytest1.test.com,mytest2.test.com可以在页面的js中加入document.domain=test.com这样,他们这两个frame就可以互相访问对方的方法和元素了
3.frame中session丢失的问题
P3P是为了防止第三方滥用用户信息而出的,由于P3P协议默认情况下禁止frame使用cookie,而session一般是由cookie来保证的,所以session失效。为了解决这个问题,需要在要使用session的响应头中加上P3P的代码。
相关推荐
在浏览器环境中,必须遵循同源策略和其他安全机制,防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。对于用户上传的富媒体内容,需要进行内容审核和过滤,以避免恶意代码的传播。 最后,富媒体信息展示还涉及无障碍性...
7. **跨域请求**:由于安全限制,JavaScript在同源策略下不能直接访问其他域名数据。可能使用了JSONP或者CORS(跨源资源共享)来解决这个问题。 8. **事件监听**:插件可能通过监听浏览器的特定事件(如页面加载、...
同源策略是浏览器安全的核心基础,用于限制一个源的文档或者脚本如何与另一个源的资源进行交互。源(origin)由协议、域名和端口组成。然而,一些客户端软件可能会使用File域加载资源,这使得同源策略在某些情况下...
JSONP(JSON with Padding)是一种跨域数据交互协议,常用于解决浏览器的同源策略限制,使得JavaScript可以从其他域名获取数据。 "images"、"font"和"css"目录则分别对应了项目的图像资源、自定义字体和样式表。CSS...
2. JSONP(JSON with Padding):跨域数据交互协议,常用于解决浏览器同源策略限制的问题,使得前端能够获取到服务器的实时数据。 3. WebSockets:提供全双工通信,允许服务器主动向客户端推送数据,适用于需要实时...
3. 跨域请求:跨域是由于同源策略限制,AJAX不能直接访问不同源的资源。解决方案包括JSONP、CORS(跨源资源共享)和代理服务器。 4. HTML标签:HTML标签分为不同的类别,如文本内容、链接、图像、表格、表单等。...
在网络安全领域,XSS(Cross-Site Scripting)攻击是一种常见的威胁,它允许攻击者通过...然而,需要注意的是,XSS防护不应仅依赖检测工具,还应加强服务器端的输入验证和输出编码,以及客户端的同源策略等安全措施。
这种方式绕过了浏览器同源策略的限制,使得网页可以从不同域名获取数据。 2. **Project Broomble**: 这是一个链接聚合服务,它可能允许用户收集、分类和分享来自互联网的各种链接。通过JSONp API,开发者可以将...
然而,由于浏览器的同源策略限制,直接从客户端向雅虎发起跨域请求是不允许的。因此,本项目使用了一个名为`bridge.php`的PHP脚本来代理这些请求。该脚本接收客户端请求后,再向雅虎新闻RSS源发起HTTP GET请求,并将...
8. **同源策略与CORS**:了解浏览器的同源策略限制以及跨域资源共享(CORS)机制,可以帮助识别和防止某些安全问题。 这个“CTF-master”资源可能包含了以上知识点的具体实例、解题思路和相关工具的使用教程,对于...
20. **跨域策略**:了解同源策略和解决跨域问题的方法。 21. **HTTP协议**:理解请求和响应的工作原理。 22. **安全**:防止XSS、CSRF等常见的Web攻击。 23. **响应式设计**:使用JavaScript实现设备适配和响应式...
D3.js项目通常与HTML、CSS和JavaScript文件一起工作,这些文件需要在Web服务器上运行以避免浏览器的同源策略限制。可以使用简单的本地开发服务器,如`http-server`或Python的内置HTTP服务器。对于Python,确保已安装...
10. **跨域资源共享(CORS)**:如果论坛涉及API调用或跨域请求,需要设置HTTP头以允许不同源的访问,这是通过服务器端的CORS策略实现的。 总的来说,"RomeoDeft.ForumNow.ga5YvnG"可能是一个HTML驱动的论坛项目,...