`

JS跨域的理解

阅读更多
首先我们要理解什么是JS跨域的由来!
我是这样理解的,因为HTTP是无状态的协议,所谓无状态的就是不像FTP协议有连接,断开之分,用户每次打开一个网页,都可以理解为一次独立的访问,这样就造成了相同网站上的不同网页都需要输入用户名和密码。为了解决这个问题,就要考虑使用Cookie,绝大部分网站都会进行一些cookie访问,那么着就造成了一个危险:别的网站可以通过这些用户名和密码,“登陆“你的账号去进行一些操作。为了阻止这个问题,浏览器就会限制JS去访问不同域的网站资源。
这里需要注意两点,第一,这个域的理解,这个域就是URL的首部,指的是window.location.protocol +window.location.host。它不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。
比如说如果协议不同,端口不同,或者说用的是IP地址,那么都不算是同域;

也可以理解为源由规则+主机+端口组成,注意不包括路径

第二,虽然浏览器默认禁止了跨域访问(访问域的资源),但并不禁止在页面中引用其他域的JS文件(理解为不允许脚本主动的去进行跨域访问,但是可以被动被别人引用),并可以自由执行引入的JS文件中的function(包括操作cookie、Dom等等)。所以我现在的理解就是在开发网站时,一定要严格过滤从外面引入的JS脚本。这里我们可以参考去年新浪微博的遭到XSS攻击的事情,这就是因为新浪微博广场页面的XSS过滤不严导致的。这也是跨域攻击的方法之一!就是我们通过点击某个URL,将恶意的JS脚本注入,这个脚本有可能自动进行很多操作。XSS的方法二就是使用外部攻击,详见http://coolshell.cn/articles/4914.html那么为了解决这个问题就提出了各种跨域的方法


详见 http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html
分享到:
评论

相关推荐

    js跨域的理解与实现

    同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。...

    Flask配置Cors跨域的实现

    1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html、Css、Js,然后在Js中通过Ajax访问C服务器的静态资源或请求。即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源。 同源策略是指:浏览器...

    Javascript 跨域知识详细介绍

    主要介绍了Javascript 跨域知识详细介绍的相关资料,并附简单实例代码,帮助大家理解,需要的朋友可以参考下

    详解JavaScript跨域总结与解决办法

    首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。更详细的说明可以看下表: URL 说明 是否允许通信 http://www.a.com/a.js ...

    跨域问题的小实验

    为了加深对跨域问题的理解以及XMLHttpRequest的使用,写了一个简单的跨域问题的实验.

    JavaScript如何实现跨域请求

    简单的理解就是向不在同一个域名的服务器文件发出请求。这个还是用实际的例子来说明一下吧,比如baidu.com向cxyblog.com发送请求,这两个域名是不同的,那么这就是跨域了,出于安全性的考虑,这样是不允许的。另外...

    js跨域请求的5中解决方式

    跨域请求数据解决方案主要有如下解决方法: JSONP方式 表单POST方式 服务器代理 ...Flash request 分开说明: 一、JSONP: 直观的理解: ...function a(data),然后将函数名传到...2、不过,web页面上调用js文件时则不受

    JavaScript同源策略和跨域访问实例详解

    本文实例讲述了JavaScript同源策略和跨域访问。分享给大家供大家参考,具体如下: 1. 什么是同源策略 理解跨域首先必须要了解同源策略。同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。 何谓同源: URL由...

    javascript跨域方法、原理以及出现问题解决方法(详解)

    javascript出于安全方面的考虑,不允许跨域调用其他页面的对象。但是在安全限制的同时也给注入iframe或是...跨域简单的理解就是因为javascript同源策略的限制,a.com域名下的js无法操作b.com或者是c.a.com域名下的对象

    深入分析Javascript跨域问题

    假设a.com/get.html需要获取b.com/data.html中的数据,而这里a.com和b.com并不是同一台服务器,这就是跨域跨域会涉及到Javascript的同源策略,简单来说就是为了保护网站的安全,不被外域(非同源)服务器的js修改本...

    跨域解决之JSONP和CORS的详细介绍

    JSONP跨域和CORS跨域 什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制...JSONP和CORS跨域理解 使用目的: JSONP与CORS的使用目的相同,并且都需要服务端和

    跨域请求资源-jsonp和cors区别.pdf

    那什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.a.com域名下的对象。 当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源...

    jsonp跨域调用

    个人对jsonp的一点理解,网上的资料太混沌

    基于C#后台调用跨域MVC服务及带Cookie验证的实现

    背景随着富客户端框架的盛行,以及众多优秀的前端js框架,很多情况我们会遇到跨域的问题,而js的ajax请求是不允许直接跨域访问的,当然你会说可以用JSONP等,但是由于代码洁癖,不想在前端和后台添加callback,而且...

    浅析JSONP之解决ajax跨域问题

    它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。  JSONP就像是JSON+Padding一样(Padding这里我们理解为填充),...

    jsonp跨域请求实现示例

    网上看了很多关于jsonp的...jsonp写法,写法上可以理解成一个javascript函数的执行,例如alert(“hello world”)会弹出hello world的窗口,再例如alert({“name”:”刘德华”})会弹出[object Object]的

    完美解决AJAX跨域问题

    从AJAX诞生那天起,XMLHttprequest对象不能跨域请求的问题就一直存在。这似乎是一个很经典的问题了。是由于javascript的同源策略(这里不作深入探讨)所导致。 解决的办法,大概有如下几种: 1. 使用中间层过渡的...

    深入浅析同源策略和跨域访问

     理解跨域首先必须要了解同源策略。同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。  何谓同源:  URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。  同源...

    Jsonp 跨域的原理以及Jquery的解决方案

    个人理解: 就是在客户端动态注册一个函数function a(data),然后将函数名传到服务器,服务器返回一个a({/*json*/})到客户端运行,这样就调用客户端的function a(data),从而实现了跨域. 代码如下: <!DOCTYPE ...

    MVC的JavaScript Web富应用开发(完整版)

    通过由浅入深的讲解,你将学会如何构建具有丰富交互以及优雅体验的JavaScript应用,书中同样提供了大量的示例代码,可以帮助你更深入的理解很多重要的概念。 揭开MVC的神秘面纱,教你如何设计合理的架构以及处理...

Global site tag (gtag.js) - Google Analytics