Selenium Cookie跨域详解

实际上也不能说是严格意义的跨域,因为我们的跨域只针对同源策略中的部分情况,也就是在host为不同子域的情况,这类问题其实是比较常见的,在大型网站中使用到的单点登录等技术的情况下,我们才会遇到诸如登录页面为login.codesy.me,而我的目标页面是admin.codesky.me。

那么此时如果我简单的设置Cookie,实际上设置的是login.codesky.me的Cookie,对于admin.codesky.me是不起作用的,而又不能直接通过Selenium去设置(因为本质上就是一个浏览器嘛)。

但是尽管不能设置在admin.codesky.me,我们可以把Cookie设置在.codesky.me中,这样会匹配到全部的子域。

当然,在Selenium中,光设置完Cookie还不行,需要再次访问需要访问的页面。

为了避免Cookie的作用域被滥用,访问成功后,我们可以考虑删除后重设(刚发现这段代码的Bug……之后改了再补):

  1. module.exports = function(sessionId) {
  2. const url = 'http://portal.shmtu.edu.cn/dcp/forward.action?path=/portal/portal&p=stuHomePage';
  3. return this.url(url)
  4. .setCookie({name: 'JSESSIONID', value: sessionId, domain: '.shmtu.edu.cn'})
  5. .url(url)
  6. .deleteCookie({name: 'JSESSIONID'})
  7. .setCookie({name: 'JSESSIONID', value: sessionId, domain: 'portal.shmtu.edu.cn'})
  8. .getTitle()
  9. .then(function(title) {
  10. return !/登录/i.test(title);
  11. });
  12. };

参考链接:http://blog.csdn.net/zm_21/article/details/49781899

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/procedure/541.html

发表评论

登录后才能评论