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