能否通过Java和前端实现跨域发送cookie并跳转登录?目标网站已发布且允许跨域,需要在本地创建一个项目,实现跨域发送cookie并跳转登录,能否实现?
2条回答 默认 最新
霸都小魔女 2023-02-27 10:34关注小魔女参考了bing和GPT部分内容调写:
是的,可以通过Java和前端实现跨域发送cookie并跳转登录目标网站。要实现这一功能,需要在本地创建一个项目,并在项目中编写Java代码和前端代码。具体来说,首先,需要在本地创建一个Java Web项目,并在项目中添加Servlet,用于处理跨域请求。然后,使用HttpServletResponse对象将cookie写入响应头中,使用HttpServletRequest对象读取cookie中的数据,并将数据传递给前端。
接下来,在前端代码中,使用XMLHttpRequest对象发送跨域请求到Java Servlet,从而获取cookie中的数据。之后,将获取的数据作为参数,使用window.location.href方法跳转到目标网站,实现跨域发送cookie并跳转登录的功能。
//Java Servlet 代码 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置cookie Cookie cookie = new Cookie("username", "admin"); cookie.setMaxAge(60 * 60 * 24); response.addCookie(cookie); // 读取 cookie 中的数据 Cookie[] cookies = request.getCookies(); String username = null; if (cookies != null) { for (Cookie c : cookies) { if (c.getName().equals("username")) { username = c.getValue(); } } } // 向前端返回数据 response.setContentType("text/plain; charset=utf-8"); response.getWriter().write(username); }// 前端 JavaScript 代码 var xhr = new XMLHttpRequest(); // 创建 XMLHttpRequest 对象 xhr.open('GET', 'http://localhost:8080/servlet', true); // 跨域请求 servlet xhr.withCredentials = true; // 请求带上 cookie 信息 xhr.send(); // 发送请求 xhr.onreadystatechange = function() { // 注册回调函数 if (xhr.readyState == 4 && xhr.status == 200) { // 成功请求到数据 // 读取 cookie 中的数据 var username = xhr.responseText; // 跳转到目标网站并带上 cookie 数据 window.location.href = 'http://www.example.com/?username=' + username; } };回答不易,记得采纳呀。
解决 无用评论 打赏 举报