- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在构建 Java JEE 后端来处理 session (与 tomcat 一起提供的 JEE servlet)时遇到问题。
我的前端位于另一台没有 Java、只有 html 和 JavaScript 的服务器上。 JavaScript 使用 ajax 将用户名和密码发布到后端服务器,该服务器将创建一个 session :
session = request.getSession();
session.setAttribute("email", email);
session.setAttribute("auth", "1");
当前端认证后再次通过javascript联系后端时,Java找不到创建的Session。以下是我在 auth 设置为 1 后查找 session 的方式:
HttpSession session = request.getSession();
String auth = (String) session.getAttribute("auth");
if (auth == null || !auth.equals("1")) {
session.invalidate();// destroy any session that they may have
System.out.println("Invalid Session");
JsonGenerator gen = Json.createGenerator(response.getWriter());
gen.writeStartObject().write("status", "expired").writeNull("data")
.write("message", "Your session has expired").writeEnd();
gen.close();
return;
}
当前端和后端托管在具有相同域名的同一服务器上时,一切正常。但当前端和后端位于具有不同域名的不同服务器上时则不然。我应该如何构造它,以便 Java 可以在前端接触它时检查 auth==1 ?
以下是我使用 Ajax 联系后端服务器的方式:
post_url = 'http://backend.anotherserver.com/api/datapoint'
$.ajax({
url: post_url,
timeout: 10000,
method: 'POST',
dataType: 'json',
success: function (json) {
if (json.status == 'success' && json.data) {
// do something
}
})
前端和后端域名不同。当我让一个前端工作后,我将创建具有不同域名的第二个前端,以及第三个、第四个等等。它们都将使用相同的后端,并且所有前端都需要能够通过后端进行身份验证。我不想使用 oauth 服务器,这对我来说现在无法处理。
最佳答案
如果负载平衡是您的要求,那么我认为您应该检查您的服务器架构。前端文件(即 HTML、Javascript 和图像)全部下载到客户端计算机,这就是这些文件的实际执行发生的地方。如果您有多个仅用于 HTML 和 Javascript 的服务器,那么这对资源来说是一种过度的浪费,因为这些服务器只能作为下载 HTML 和 Javascript 文件的一种方式。如果您需要为前端文件提供多个下载源,那么您可以使用 CDN 服务器,并且可以从这些源下载前端内容。
真正的操作总是发生在 Tomcat 服务器中,来自客户端计算机的所有 Ajax 调用都来自该服务器并汇聚,后端代码的执行和后端数据的处理都在服务器计算机中进行。因此,您应该考虑提供 Tomcat 集群服务器来处理负载。然后使 session 在这些 Tomcat 集群上保持粘性。因此,前端用户请求之间不会发生 session 混合。 session 存储对于域或子域是唯一的。因此,通常不可能在多个域或子域之间共享 session 。如果您有集群 Tomcat 服务器,那么粘性 session 将帮助您避免此问题。那么自然就有一个带反向代理的负载均衡器,用于白标。
前后端代码分离实际上需要通过良好的编码架构来实现,而不是为js和后端tomcat文件提供不同的服务器。如果你没有良好的编码结构,那么即使你有不同的 js 和后端文件服务器,你最终也可能会出现前端和后端代码交叉的情况。
关于java - 托管在不同服务器上的 JavaScript 前端的 JEE session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56696230/
这个问题已经有答案了: The infamous java.sql.SQLException: No suitable driver found (21 个回答) How to install JDB
我目前正在使用 Java EE 创建一个网站,使用 maven、thymeleaf,并将其托管在 heroku 上(数据库插件是 JawsDBMySQL)。我创建了一个简单的 html 页面以检查它是
当我研究 3 层架构时,有人告诉我它需要三台服务器:1-网络服务器2- 应用服务器3-蓝光服务器不利的是,当我在 JEE 中工作时,有一个 Glassfish 或 JBOS 在其下运行所有模块的服
这个问题在这里已经有了答案: Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already
我有一个在集群环境中的 Glassfish 3.1.2 上运行的 Java EE 应用程序。 我想每天执行一次特定方法(即从数据库中删除一些条目)。 我创建了一个计时器: @Singleton pub
在我的 JEE 应用程序中,在 glassfish 3 上运行,我遇到以下情况: MyFacade 类 @Interceptors(SomeInterceptor.class) public void
我正在开发的休息应用程序有一个奇怪的问题。 我创建了实体类和 dao 类来管理它们。现在,当我将应用程序部署到服务器时,我可以看到我的数据库架构正在更新。现在我有这个: @Stateless
我有一个需要参数的 bash 脚本。 当我直接从 putty 调用它时,它可以工作,当我从我的 jee 程序中调用它时,它不起作用并且不会向我显示任何错误。 这是我的java代码: String[]
我按照以下顺序在eclipse indigo中安装了以下插件以开始spring开发 Spring 工具套件 M2E( maven ) 这两个安装后,报错jira 连接器未安装,所以我安装了以下插件。
本文整理了Java中org.apache.openejb.jee.oejb2.WebServiceSecurityType类的一些代码示例,展示了WebServiceSecurityType类的具体用
本文整理了Java中org.apache.openejb.jee.oejb2.WebServiceBindingType类的一些代码示例,展示了WebServiceBindingType类的具体用法。
所以我遇到了类似这里的问题... Spring 3.0 Error: The matching wildcard is strict, but no declaration can be found
这个问题在这里已经有了答案: Why there is number two in J2EE name? [duplicate] (1 个回答) 4年前关闭。 我想了解 JEE 和 J2EE 之间的区
我们有一个特殊要求,即我们只需要使用 AEM (Adobe Experience Manager) 来设计(创作)表单模板,其中包含静态图像和 html 元素(例如下拉列表、文本区域等)。 这里的问题
我会保持快速。 我正在按照the Spring documentation listed here的示例进行操作。当我使用Gradle时,我可以使用以下命令运行该应用程序: ./gradlew boo
有什么方法可以全局设置我的 REST header 吗?我尝试结合一些 JAX-RS 技巧,但没有效果。 我的所有 REST 服务都有这些注释: @Produces(MediaType.APPLICA
我在构建 Java JEE 后端来处理 session (与 tomcat 一起提供的 JEE servlet)时遇到问题。 我的前端位于另一台没有 Java、只有 html 和 JavaScript
我正在 JEE 中开发一个应用程序 我在 eclipse 下工作,并使用 Tomcat 作为应用程序服务器。 我介绍了 Java 管理扩展 (JMX) 的概念。 搜索此 API,我发现它用于从计算机或
在 JEE 7 WildFly 环境中,我想要执行任务(工作线程类的方法)而不阻塞调度程序。这样调度程序就能够启动多个独立于调度程序运行的“任务/线程”(即发即忘)。 在普通的旧 Java 中,我只需
我是 Angular 世界的新手,我从一些示例开始,将 Angular 2 与 Rest java 应用程序一起使用(使用 jax-rs )所有这些示例都使用 2 个项目,第一个项目是 JEE 项目,
我是一名优秀的程序员,十分优秀!