zoukankan      html  css  js  c++  java
  • 关于跨域

      

    以前写过一个相关的跨域的例子,是借助第三个无关的页面(使用了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 解析器解析。)

  • 相关阅读:
    费马小定理
    Big Number阶乘位数计算(斯特林公式)
    V
    矩阵快速幂求斐波那契
    奇迹
    缘分
    求导
    拓扑排序
    线段树
    单调栈
  • 原文地址:https://www.cnblogs.com/qiyongliang/p/4128096.html
Copyright © 2011-2022 走看看