Java 如何判断页面是否由JSP生成?

Java 如何判断页面是否由JSP生成?,java,jsp,Java,Jsp,因为有许多编程语言可用于开发web应用程序。如果不看源代码,有哪些方法可以识别web应用程序是用Java编写的?可能是URL上的.jsp扩展 但是,这并不一定意味着它是一个JavaServerPages脚本(例如,我可以在服务器上设置使用PHP呈现的.jsp文件),也不是每个jsp页面都有.jsp扩展名(如果我喜欢,我可以在服务器上使用jsp呈现.html,甚至可以在页面上隐藏扩展名)。检查URL。如果页面以.jsp结尾,则它是一个Java服务器页面。另外,检查页面请求上的响应标题。可能有一个X

因为有许多编程语言可用于开发web应用程序。如果不看源代码,有哪些方法可以识别web应用程序是用Java编写的?

可能是URL上的
.jsp
扩展


但是,这并不一定意味着它是一个JavaServerPages脚本(例如,我可以在服务器上设置使用PHP呈现的.jsp文件),也不是每个jsp页面都有
.jsp
扩展名(如果我喜欢,我可以在服务器上使用jsp呈现.html,甚至可以在页面上隐藏扩展名)。

检查URL。如果页面以.jsp结尾,则它是一个Java服务器页面。另外,检查页面请求上的响应标题。可能有一个X-Powered-By标头或类似的东西,表明它是由java驱动的

如果URL包含扩展名,请查看该扩展名是.jsp、.jsf还是.jspx。隐藏它是可能的,但是如果它有一个这样的扩展,那么它肯定是用Java编写的。

大多数时候都有一些提示,但本质上web服务器提供html标记,因此可以将其配置为隐藏服务器端的内容。因此,没有确定的方法来判断站点是用java编写的。

Struts库喜欢(习惯于?)使用.do扩展。

我认为你找不到它,URL可以像.jsp、.jspx、.do、.action、.zul/.zhtml(zk框架)甚至没有像/servlet/http头测试这样的扩展

一种可行的方法(也不应该依赖它)是检查响应的
Server
http头,下面的示例是由
Tomcat
Server返回的响应:

HTTP/1.0 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"7777-1302152739000"
Last-Modified: Thu, 07 Apr 2011 05:05:39 GMT
Content-Type: text/html
Content-Length: 7777
Date: Wed, 04 May 2011 19:47:23 GMT

“web应用程序”这个术语是非常不具体的。你能澄清一下吗?你是指HTML、服务器端应用程序还是其他什么?为了澄清这两种HTML,服务器端。可能的扩展副本是检查语言最不可靠的方法。如今,MVC应用程序最流行的是使用RESTful url,因此您正在加载的页面名称并不总是出现在url中。大多数PHP框架(如Kohana)都隐藏了扩展。看看他们的网址,他们用了什么语言?当然,Spring MVC也是一样。但这是检查的一种方法。没有人真的想伪造Java页面,所以查看.jsp是发现页面运行Java的一种非常可靠的方法,OP就是这么问的。