- 浏览: 1461878 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
luhouxiang:
写的很不错,学习了
Extjs 模块化动态加载js实践 -
kingkongtown:
如果想改成淘宝后台那样,可以在编辑器批量上传图片呢?
kissy editor 阶段体会 -
317966578:
兄弟我最近也在整jquery和caja 开放一些接口。在git ...
caja 原理 : 前端 -
liuweihug:
Javascript引擎单线程机制及setTimeout执行原 ...
setTimeout ,xhr,event 线程问题 -
辽主临轩:
怎么能让浏览器不进入 文档模式的quirks模式,进入标准的
浏览器模式与文本模式
场景:
在 xx.com/y.html 代码为:
<iframe id='ok' name='ok' src='http://zz.com/w.htm?authKey=ertwg'></iframe>
w.htm 需要根据 authKey 写入 cookie ,授权 y.html 嵌入 zz.com 站点的其他页面(例如即时重定向到另一个页面显示写入的 cookie )。
w.htm 内容为:
if (request.getParameter("authKey") != null) { response.addCookie(new Cookie("logined", "ok")); response.sendRedirect(request.getContextPath() + request.getServletPath()); } else { Cookie[] cs = request.getCookies(); if (cs != null) { for (Cookie c : cs) { if (c.getName().equals("logined")) { response.getWriter().println("logined : " + c.getValue()); } } } }
问题 :
但是在 ie6,7 以及 safari 中发现 cookie 并没有被写入,重定向的读页面读不出刚刚设置的cookie。
解决:
涉及到 p3p 简洁策略 的设置以及在 safari 下的特殊处理:
ie6,7
需要在 w.htm 的返回响应中加入 p3p 简明策略响应头:
// ie need this response.addHeader("P3P", "CP=\"CAO PSA OUR\"");
允许在嵌入自己情况下写入cookie。
safari
不能直接通过 iframe.src 来请求第三方页面,需要通过表单 post 提交来允许第三方页面 cookie 写入 :
S.use("ua,dom", function(S, UA, DOM) { var ok = S.get("#ok"); var action = "http://zz.com/w.htm?authKey=ssdf"; if (UA.safari) { var form = DOM.create("<form " + " method='post' " + "action='" + action + "'" + " target='ok'" + " style='position: absolute;left: -9999;top: -9999px'>"); DOM.append(form,document.body); DOM.append(DOM.create("<input name='authKey' value='ssdf'/>"), form); form.submit(); } else { ok.src = action; } });
update 2011-05-26
1.该问题和 iframe 没有关系,只要是当前页面往第三方页面发送 get 请求,该 get 请求无论是通过 iframe发送,还是通过 img.src 或者通过 script.src ,第三方页面都会写不进 cookie.
2.多次重定向以及 https 情景下依然可用。
场景:
http://a.com/demo.html 嵌入 iframe 页面 http://b.com/cookie.htm?set=2
a.com/demo.html :
<iframe src='http://b.com/cookie.htm?set=2'></iframe>
b.com/cookie.htm :
if (request.getParameter("set") != null) { // ie need this //response.addHeader("P3P", "CP=\"CAO PSA OUR\""); String set = request.getParameter("set"); if (set.equals("1")) { System.out.println(request.getPathInfo()); response.addCookie(new Cookie("logined", "ok")); response.sendRedirect(request.getContextPath() + request.getServletPath()); } else { response.sendRedirect("https://a.com/iframe_post.html"); } } else { Cookie[] cs = request.getCookies(); if (cs != null) { for (Cookie c : cs) { if (c.getName().equals("logined")) { response.getWriter().println("logined : " + c.getValue()); } } } }
会使得 a.com 中的 iframe 跳转多次,
iframe -> b.com/cookie.htm?set=2 -> https://a.com/iframe_post.htm
a.com/iframe_post.htm 会再次发送请求给 b.com/cookie.htm?set=1 ,这时会设置 cookie:
a.com/iframe_post.htm :
<meta charset='utf-8'/> <script type="text/javascript" src="../../base/javascript/kissy.js"></script> <script type="text/javascript"> KISSY.ready(function(S) { S.use("ua,dom", function(S, UA, DOM) { var ok = S.get("#ok"); var action = "https://b.com/cookies?set=1"; if (UA.safari) { var form = DOM.create("<form " + " method='post' " + "action='" + action + "'" + " style='position: absolute;left: -9999;top: -9999px'>"); DOM.append(form,document.body); DOM.append(DOM.create("<input name='set' value='1'/>"), form); form.submit(); } else { window.location = action; } }); }); </script>
关键在于设置 cookie 前的这一请求在 safari 下必须为 post 过去的!即 a.com/iframe_post.html 中的 UA 判断,通过 form 提交使得自身跳转到 b.com/cookie.htm
发表评论
-
continuation, cps
2013-09-12 16:49 2797起 随着 nodejs 的兴起,异步编程成为一种潮流 ... -
一种基于匹配回朔的 css3 选择器引擎实现
2013-05-07 20:40 3401一种基于匹配回朔的 css3 选择器引擎实现 介绍 C ... -
cubic-bezier 模拟实现
2013-01-05 16:34 14091cubic-bezier 曲线是 css3 动画的一个重要基石 ... -
构建前端 DSL
2012-10-11 22:10 5361目前在传统的软件开 ... -
Get cursor position and coordinates from textarea
2012-04-10 20:50 5047最近需要从 textarea 中获 ... -
兼容 ie 的 transform
2012-02-23 14:00 6428css 2d transform 是 css3 引入的一个新的 ... -
promise api 与应用场景
2012-02-07 17:34 7382promise 是 commonjs 社区中提出的异步规范,其 ... -
closure compiler 代码优化实例
2012-01-08 03:23 2833closure compiler 可以进行不少有意思的优化 ... -
write html parser
2011-12-01 02:48 2918首先需要声明 html 不能用正则表达式来直接匹配进行内容抽取 ... -
获取剪贴板数据
2011-11-07 23:31 6449兼容性: 获取剪贴板数据这块各个浏览器间存在很大的 ... -
url 映射问题
2011-11-07 21:52 3223背景 url mapping 我最早知道是作为 j ... -
tip:如何原生播放声音
2011-10-19 12:45 2981如果不想考虑浏览器间 ... -
转载:瀑布流布局浅析
2011-09-29 19:02 2847简介 如果你经 ... -
cross domain request
2011-09-29 18:39 2847场景 跨域请求是随着 ... -
基于多继承的树设计
2011-09-18 03:42 2269分类 树是一种常见 ... -
caja 原理 : 前端
2011-09-01 16:48 7051作为前端开放的基础安全保证,caja 是目前比较合 ... -
tokenization of html
2011-08-29 22:38 2789html 符号解析问题 场景: 在页面上输出包 ... -
ie 下 cloneNode 导致的属性克隆
2011-08-24 16:10 2478这个还是很值得记下,一直存在的很大隐患终于解决,由于在 ie& ... -
循环引用下的深度克隆
2011-08-04 20:39 2308深度复制和浅度复制 是当初初学 c 遇到的第一批问题,似乎使 ... -
模块的静态与动态循环依赖
2011-07-25 03:43 3281场景: 循环依赖 我是不支持的,但现实中似乎又确实需 ...
相关推荐
OkHttp还支持使用`CookieJar`接口,可以配合第三方库如`Square`s `Jsoup`来实现Cookie的存储和读取。 在登录Demo中,通常的步骤如下: 1. 用户输入用户名和密码,点击登录按钮。 2. 发送登录请求到服务器,服务器...
【百度知道第三方用户系统接入开发接口文档V2.1】主要介绍了如何使第三方用户系统与百度知道平台进行集成,以实现用户身份验证、登录、登出及注册等功能。以下是相关知识点的详细说明: 1. **用户登录接口**: - ...
6. **Cookie策略**:网站可以设置Cookie策略,比如仅限第一方Cookie、禁止第三方Cookie等。这有助于控制用户数据的使用,并符合GDPR等数据保护法规。 7. **用户控制**:用户可以在浏览器设置中管理Cookie,选择接受...
1. **CORS Middleware**:Django CORS Headers是一个第三方中间件,可以方便地管理允许跨域请求的域。安装该中间件后,通过配置`CORS_ORIGIN_WHITELIST`,可以指定允许跨域的域名列表。例如: ```python INSTALLED...
在Delphi中,我们可以利用第三方库或内置的HTTP组件来与Cookies交互。 二、Delphi处理Cookies的方法 1. Indy库:Indy是一个强大的网络组件库,包含了一系列用于HTTP通信的组件,如TIdHTTP。通过TIdHTTP的Cookie...
1. **发送HTTP请求**:使用Java的`HttpURLConnection`或第三方库如Apache HttpClient,发送GET、POST等请求。 2. **设置Cookie**:在请求头中添加Cookie信息,以维持会话状态。 3. **解析响应Cookie**:从HTTP响应头...
2. **隐私风险**:虽然编辑Cookie可以帮助保护隐私,但过度依赖或滥用也可能暴露个人偏好,甚至让恶意第三方有机会利用。 3. **版本兼容**:不同的浏览器和系统可能需要特定版本的Cookie编辑器,使用前要确保编辑器...
最后,考虑到用户隐私和安全,应该谨慎使用Cookie,尤其是第三方Cookie,因为它们可能用于追踪用户的行为。现代浏览器提供了更多的隐私控制选项,允许用户选择接受哪些网站的Cookie。 了解并掌握Cookie的基本操作是...
- 对于安全性,不要在`Cookie`中存储敏感信息,因为它们可以被第三方获取。 5. **代码示例**: 通常会有一个初始化函数,如`initTree`,在这个函数中,先读取`Cookie`,然后设置`ZTree`的状态。同时,为`ZTree`的...
使用js-cookie时,应考虑到安全和隐私问题,避免存储敏感信息,因为Cookie默认情况下会随着HTTP请求发送,可能被第三方拦截。同时,合理设置过期时间和作用域,防止内存泄漏和不必要的数据暴露。 10. **文档和社区...
JavaScript检测浏览器cookie是否已经启动,代码稍显复杂,通过写入一个测试cookie判断cookie是否已经启动 var dt = new Date(); dt.setSeconds(dt.getSeconds() + 60); [removed] = cookietest=1; expires= + dt....
- 使用Cookie实现SSO,需要考虑跨域问题,确保所有应用系统能够访问到同一Cookie。 - 认证中心需要具备处理登录请求、验证用户凭证、生成和解析令牌的能力。 - 应用系统需要配置以信任认证中心的令牌,并能正确...
jQuery库并没有内置的cookie管理函数,但可以通过第三方插件如`jquery-cookie`来实现。在这个教程中,我们将使用`$.cookie`这个函数,它是一个模拟的API,用于简化cookie的操作。 **写入Cookie** 写入cookie使用`$....
记住,对于敏感数据,不应使用Cookie存储,因为它可以通过HTTP请求被第三方获取。对于更安全的本地存储,可以考虑使用Web Storage(localStorage或sessionStorage)。 总结一下,这个知识点主要涉及了以下几个方面...
这个问题的解决方案可以分为两个部分:第一部分是注册第三方服务网站,第二部分是直接在网站上添加代码。 注册第三方服务网站 在网站上进行流量统计可以找第三方服务网站去注册。这些服务网站通常提供了统计网页...
在.NET框架中,我们可以利用第三方库如Newtonsoft.Json来实现JSON序列化和反序列化。首先,确保已经下载并引用了Newtonsoft.Json.dll库,这个库提供了方便的JsonConvert类,可以方便地进行对象与JSON字符串之间的...
- **隐私设置**:用户的浏览器隐私设置可能阻止了第三方Cookie或所有Cookie的存储。 - **P3P政策**:Internet Explorer要求网站提供P3P(平台用于隐私偏好)政策,以允许跨站点脚本设置Cookie。 - **Session问题*...
在JavaScript环境中,Cookie的操作通常需要借助于内置的Document对象或第三方库。然而,Awesome Cookie Manager通过提供直观的用户界面,简化了这一过程,让用户无需编写任何代码就能实现对Cookie的精细化控制。这...