萍水客 2023-02-27 10:19 采纳率: 50%
浏览 43

能否通过Java和前端实现跨域发送cookie并跳转登录?

能否通过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;  
    
        }  
    };  
    

    回答不易,记得采纳呀。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月27日