当前位置: 首页 > 面试题库 >

如何在JSP中为子域正确设置cookie?

闾丘玺
2023-03-14
问题内容

我有以下设置:

  • 所有请求均为https(在下面的描述中,我将省略此请求)
  • 3个docker服务器:localhost:8090,localhost:8091,localhost:8092
  • 在主机上(在Windows计算机上),我有3个域:loc.localdomain,loc2.localdomain和loc3.localdomain都指向我的IP地址
  • 所以我将在我的应用中使用localhost:8090-> loc.localdomain,localhost:8091-> loc2.localdomain和localhost:8092-> loc3.localdomain

现在,我有一个应用程序loc可以为loc3子域设置一些Cookie 。我看到在chrome网络响应中设置(或假设设置了)cookie。

Set-Cookie: MY_COOKIE=YUMM; domain=loc3.localdomain; 
expires=Fri, 21-Jun-2019 10:48:58 GMT; path=/coolApp/bro

然后在app中,loc我有一个按钮,该按钮将用户发送到另一个app中loc2,该用户将用户重定向到loc3at
loc3.localdomain:8092/coolApp/bro/something/more。因此,目前我应该在的应用程序请求中看到cookie
loc3,但我没有看到。

Cookies设置:

FacesContext facesContext = FacesContext.getCurrentInstance();
//facesContext.getExternalContext().addResponseCookie("TEST", "TEST", properties); tried this too 
//then in properties will be the maxAge, path and domain set

Cookie cookie = (Cookie) facesContext.getExternalContext().getRequestCookieMap().get("MY_COOKIE");
if(cookie == null){
     cookie = new Cookie("MY_COOKIE", "YUMMM");
}

cookie.setMaxAge(31536000);
cookie.setPath("/coolApp/bro");
cookie.setDomain("loc3.localdomain"); // I've tried ".localdomain" too

HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addCookie(cookie);

知道此设置有什么问题吗?


问题答案:

基于此(https://curl.haxx.se/rfc/cookie_spec.html),该域至少应包含2个点,因此答案是对本地主机使用其他别名来模拟我的子域。就像是:*.example.com

更改域后,所有工作均按预期进行。



 类似资料:
  • 问题内容: 遵循OnlyOffice帮助中心的说明,将创建由浏览器声明为无效的安全证书,因为它是自签名的。 目的是在适用于NextCloud的Docker上使用OnlyOffice的服务器,该服务器已在另一台服务器上正常运行。 当前,已在说明建议的目录中创建证书: 我已经按照所有给定的步骤进行操作,但是它不起作用。 有没有办法使用LetsEncrypt代替自签名证书? 我不是IT管理人员,我是一个

  • 问题内容: 我在将Rails路由与AngularJS集成时遇到了麻烦。 当我在浏览器输入中转到“ localhost:3000”时,它将我重定向到“ localhost:3000 /#/ auth / sign_in” 但“ sign_in”模板无法呈现。 然后,第二,如果我转到“ localhost:3000 /#/”,它会将我重定向到“ localhost:3000 /#/ auth / si

  • 我想知道我在Android Studio 3.0 Beta 2的Lombok设置中做错了什么? 这就是我的 Gradle 构建文件的样子: 我已经安装了lombok插件,lombok的东西也在IDE中正确显示,但当我想构建项目时,Gradle找不到lombok创建的getter/setter。我试着按照教程https://projectlombok.org/setup/android和其他关于此设

  • 我的Java规范:JRE:1.8_U60,JDK:1.8_U60 但不幸的是,我没有任何选择来创建一个外汇项目。没有称为JavaFX的子节。 如何正确地为Eclipse Mars设置JFX(如果设置完全不起作用)?这里还有一个类似的问题。

  • 我在AWS ECS有以下设置: null

  • 你好,我将获得一个子域division.company.com的访问权限,我将不得不在合同中指出它的位置。我不想要求合同更新,因为每次我需要切换服务器时,子域都指向哪里。 我希望有一个顶级的DNS一样的子域控制。 a)我是否使用某种路由/代理服务器? b) 有没有办法进行动态DNS分配(顶级域端的单次最小配置)? c) 我所寻找的DDNS提供商可能是这样的吗https://www.dynu.com

  • 问题更新如下问题下的备注。 当我试图与Activiti框架一起运行spring-boot2项目时,我收到的问题描述得稍微低一些。 首先,这个项目是使用Spring初始值设定项创建的,所有进一步的开发都是使用本教程完成的-如何使用Spring Boot启动Activiti Spring JPA。 本教程描述了如何与Spring-boot 1. x一起使用它。在这个条件下(sping-boot-1.

  • null 这是这个问题的视频 下面是我如何切换屏幕的代码: 从游戏第一次打开到主菜单: GamesCreen: