码迷,mamicode.com
首页 > 其他好文 > 详细

关于跨域

时间:2014-11-28 11:37:40      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   color   使用   sp   java   文件   on   

  

以前写过一个相关的跨域的例子,是借助第三个无关的页面(使用了iframe)

最近又遇到了几种跨域的解决方案:

1、

  asp.net设置p3p的方法:

    HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""")

  PHP设置p3p的方法:

    header(‘P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"‘);

  JSP设置p3p的方法:

    response.setHeader("P3P","CP=‘IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT‘")

做一个例子:

 在www.a.com 中有两个页面:index.jsp(普通的一个页面)   setCookie.jsp(设置本地cookie)

www.b.com中有一个页面:index.jsp,此页面中有一个frame,frame的src=www.a.com/setcookie.jsp

正常访问 www.b.com ,然后看看(www.a.com/index.jsp)是否有cookie信息,答案是否定的 www.a.com 域名下是不存在cookie

要想在www.a.com下生成想要的cookie就可以使用上面的方法:response.setHeader("P3P","CP=‘IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT‘")

再次尝试访问,就会发现www.a.com/index.jsp 下有了想要生成的Cookie.

 

第二种方式呢:JSONP的使用

首先了解一下<script>的src的属性,不一定指向的是js文件,例如可以指向一个servlet、jsp等等

首先在www.b.com 下有一个页面index.jsp ,index.jsp中有一个<script>window.onload=function1();</script>

www.a.com 下有个页面里面定义了一个function1的js方法,正常的情况下我们在www.b.com中是访问不到www.a.com 下的function1,这就是所谓的跨域

接下来的方法就可以实现在在www.b.com 中调用www.a.com 中的function1,在www.a.com/index.jsp中引入<script src=http://www.b.com/index.jsp></script>

(function1要放在这句话的前面吧),这就是所谓牛X的JSONP

(由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。)

 

关于跨域

标签:style   http   io   color   使用   sp   java   文件   on   

原文地址:http://www.cnblogs.com/qiyongliang/p/4128096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!