zoukankan      html  css  js  c++  java
  • 使用p3p简洁策略解决第三方跨域cookie问题

    使用p3p简洁策略解决第三方跨域cookie问题 - Q+ PC - Q+开发者论坛 - Powered by Discuz!

        使用p3p简洁策略解决第三方跨域cookie问题

        [复制链接]
               

        584692970

        版主

        Rank: 7Rank: 7Rank: 7

            串个门
            加好友
            打招呼
            发消息

           
        电梯直达

        跳转到指定楼层


        楼主

        发表于 2011-11-4 14:26:50
        |只看该作者
        |倒序浏览
        本帖最后由 584692970 于 2011-11-4 14:29 编辑



        问题

        在Q+环境中,第三方应用经常会遇到这样的问题,无法获取用户登录状态,应用无法正常读写Session数据等。究其原因,是由于第三方应用使用了cookie来记录用户身份,或者使用cookie来保存应用数据。

        那为什么原本在浏览器中一切正常的应用在Q+中就会出现这些问题呢?

        原因

        Q+使用一个iframe包含第三方应用,Q+的vm层的url是vm.qplus.com,与第三方的域是不同的,所以第三方的cookie是跨域cookie。由于Q+使用了ie浏览器的默认隐私设置,如图:



        没有使用隐私策略声明的网站的cookie都是被阻止的。

        解决方法

        在第三方应用的每个http response的header中设置p3p:

        P3P: CP="CURa ADMa DEVa PSAo PSDoOUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP  COR"

        一下是常见后台语言设置p3p精简隐私策略的示例,

        JSP:

        <%

        response.setHeader("P3P","CP=\" CURa ADMa DEVa PSAoPSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR \""); 

        %>

        PHP:

        <?php

        header('P3P: CP=" CURa ADMa DEVa PSAoPSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR "'); 

        ?>

        ASP

        <%

        Response.AddHeader "P3P", "CP= CURa ADMa DEVa PSAo PSDo OUR BUSUNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR "

        %>


        附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册
        本主题由 584692970 于 2011-11-4 14:26:50 置顶
        分享到:

        QQ空间QQ空间
        腾讯微博腾讯微博
        腾讯朋友腾讯朋友

        收藏收藏0
             


        举报

             

        minren

        版主

        Rank: 7Rank: 7Rank: 7

            串个门
            加好友
            打招呼
            发消息

           

        沙发


        发表于 2011-11-14 18:32:26
        |只看该作者
        本帖最后由 minren 于 2011-11-14 18:55 编辑



        也可以通过配置Web Server来添加P3P头



        lighttpd



        server.modules    = ("mod_setenv")



        setenv.add-response-header = ( "P3P" => "CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'")







        apache



        <VirtualHost>

        ....

        Header set P3P 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'

        ...

        </VirtualHost>



        IIS



        管理工具——〉选择一个网站——〉属性——〉http头,增加一个http头

        然后输入头名:P3P

        输入头内容:CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR



        如果没有权限配置IIS服务器,但是你用的是asp.net的话



        可以用httpmodual来实现在全部页面或者部分页面头部插入所需要的标志

  • 相关阅读:
    SQL易错总结1
    线程池使用总结
    多线程的上下文切换
    SQL 排序按指定内容优先排序
    System x 服务器制作ServerGuide U盘安装Windows Server 2008 操作系统 --不格式化盘
    错误“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”解决方案
    sql server 2012 链接服务器不能链接sql server 2000的解决方案 ,
    sqlserver2005版本的mdf文件,还没有log文件,
    BCP SQL导出EXCEL常见问题及解决方法;数据导出存储过程
    Nginx
  • 原文地址:https://www.cnblogs.com/lexus/p/2479584.html
Copyright © 2011-2022 走看看