Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Cookie不是在google Chrome中创建的,可以与fire fox配合使用_Java_Spring_Spring Boot_Spring Mvc_Cookies - Fatal编程技术网

Java Cookie不是在google Chrome中创建的,可以与fire fox配合使用

Java Cookie不是在google Chrome中创建的,可以与fire fox配合使用,java,spring,spring-boot,spring-mvc,cookies,Java,Spring,Spring Boot,Spring Mvc,Cookies,我已经为Oracle Eloqua创建了一个应用程序,它将在我的Oracle Eloqua帐户的菜单中打开。 单击应用程序时,它希望创建一个cookie供以后使用。 单击应用程序时,将显示一个登录按钮,单击该按钮将打开一个弹出窗口,该窗口将转到Oracle网站进行oAuth验证,登录后,它将重定向到父窗口(以及xlosing弹出窗口)。现在,它在FireFox中可以正常工作,但在Google Chrome中,当我点击应用程序时,它不会创建cookie,我几乎不知道那里发生了什么。我读了很多文章,

我已经为Oracle Eloqua创建了一个应用程序,它将在我的Oracle Eloqua帐户的菜单中打开。 单击应用程序时,它希望创建一个cookie供以后使用。 单击应用程序时,将显示一个登录按钮,单击该按钮将打开一个弹出窗口,该窗口将转到Oracle网站进行oAuth验证,登录后,它将重定向到父窗口(以及xlosing弹出窗口)。现在,它在FireFox中可以正常工作,但在Google Chrome中,当我点击应用程序时,它不会创建cookie,我几乎不知道那里发生了什么。我读了很多文章,尝试了很多东西,但我不知道为什么cookie不是在chrome上创建的。它只是在Oracle的Oauth验证之后才在chrome上创建cookie,这意味着可以在chrome上创建cookie,但当点击应用程序时,它不会创建cookie,这会弄乱整个逻辑。 我的代码如下

@GetMapping(path = "/login/oauth/signing")
public String eloquaOauthSigning(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
                                 HttpServletResponse response) {

    try {
        if (StringUtils.isAnyEmpty(request.getParameter("oauth_consumer_key"),
                request.getParameter("oauth_timestamp"), request.getParameter("oauth_nonce"),
                request.getParameter("oauth_signature"), request.getParameter("site"))) {
            logger.error("Oauth request parameters are mandatory for oauth signing");
            throw new LoginException("Oauth request parameters are mandatory for oauth signing");
        }
        
        //response.setHeader("Set-Cookie", "key=value; HttpOnly; SameSite=strict");

        CookieDefinition sourceSiteCookieDefinition = CookieDefinition.builder()
                .cookiePrefix(CookiePrefix.SOURCE)
                .cookieType(CookieType.SITE_NAME)
                .cookieValue(request.getParameter("site"))
                .cookiePath("/")
                .build();
        Cookie siteCookie = cookieService.createCookie(sourceSiteCookieDefinition);
        response.addCookie(siteCookie);
        request.setAttribute("siteCookie", siteCookie);

        CookieDefinition emailSiteCookieDefinition = CookieDefinition.builder()
                .cookieType(CookieType.SITE_EMAIL)
                .cookieValue(request.getParameter("site"))
                .cookiePath("/")
                .build();
        Cookie siteCookieForEmail = cookieService.createCookie(emailSiteCookieDefinition);
        response.addCookie(siteCookieForEmail);
        request.setAttribute("siteCookieForEmail", siteCookieForEmail);
        
        //TODO FIXIT Check it
        //redirectAttributes.addFlashAttribute(EloquaApiConstants.SITE_COOKIE_FOR_EMAIL, siteCookieForEmail.getValue());

        oauthService.signRequest(request);
    } catch (LoginException e) {
        redirectAttributes.addFlashAttribute(EloquaApiConstants.OAUTH_ERROR, true);
    }

    redirectAttributes.addFlashAttribute(EloquaApiConstants.OAUTH_FLAG, true);

    return "redirect:/login/oauth/login-with-eloqua";
}
我还想在响应中设置cookie,然后将它们放在所需的控制器中作为解决方法,但它返回null。 提前谢谢