JS跨域获取cookies

1. 通过$.getScript跨域获得cookies

前端代码
通过页面加载后调用后台接口获得对应服务下的cookies,返回来的必须是js对象。

$.getScript('$siteDomain/ssoApi?'+Math.random(),function(){
    console.log(" username:" + userCookie.uname);
})

后台代码

@ResponseBody
@RequestMapping("/home/ssoApi")
public void getCookies(HttpServletRequest request,HttpServletResponse response){
   String uid = CookieHelper.getCookieVal(request, "uid");
   String uname=CookieHelper.getCookieVal(request,"uname");
       PrintWriter out = null;
       try {
           String userCookie="var userCookie={uid:"+uid+","+"uname:"+"'"+uname+"'"+"}";
           out = response.getWriter();
           out.println(userCookie);
       } catch (IOException e) {
           e.printStackTrace();
       }
}

通过以上例子就可以实现js跨域获得cookies实现显示用户的登陆状态,和其他功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript 由于同源策略的限制,无法直接获取其他名下的 Cookies。同源策略是浏览器的一项安全特性,限制了不同源(名、协议、端口)之间的访问。这样可以防止恶意网站窃用户的敏感信息。 然而,存在一些跨域解决方案可以间接获取其他名下的 Cookies,如在服务端使用代理,或通过使用 JSONP、CORS 等技术进行数据交互。下面以代理方式为例进行说明: 1. 在服务器端创建一个代理接口,用于访问目标名,并将请求结果返回给客户端。 2. 客户端通过 AJAX 请求代理接口,将代理接口的响应数据返回到前端。 3. 在前端获取代理接口返回的数据,解析其中的 Cookies。 例如,使用 Node.js 创建一个代理接口: ```javascript const express = require('express'); const axios = require('axios'); const cookieParser = require('cookie-parser'); const app = express(); app.use(cookieParser()); app.get('/proxy', async (req, res) => { const targetUrl = req.query.url; try { const response = await axios.get(targetUrl, { headers: { Cookie: req.headers.cookie }}); res.send(response.data); } catch (error) { res.status(500).send('Error'); } }); app.listen(8000, () => { console.log('代理服务器已启动'); }); ``` 通过这种方式,我们可以间接获取其他名下的 Cookies。当在前端发送请求时,将目标名作为参数传递给代理接口,代理接口会向目标名发送请求,并将响应数据返回给前端。在前端可以通过解析响应数据中的 Cookies获取其他名下的 Cookies

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值