NanoHTTPD是一个轻量级 HTTP 服务器,设计用于嵌入其他应用程序,根据修改的 BSD 许可证发布。
项目结构
NanoHTTPD项目目前由四个部分组成:
/core– 功能齐全的 HTTP(s) 服务器,由一 (1) 个 Java 文件组成,可以为您自己的项目进行定制/继承。
/samples– 有关如何自定义 NanoHTTPD 的简单示例。请参阅HelloServer.java,了解热情欢迎您的杀手级应用程序!
/websocket– Websocket 实现,也在单个 Java 文件中。取决于核心。
/webserver– 独立文件服务器。奔跑并享受。一种流行的用途似乎是从 Android 设备上提供文件。
/nanolets– 独立的 Nano 应用服务器,为实施者提供类似 servlet 的系统。
/fileupload– 集成apache通用文件上传库。
HTTP服务器,通常称为Web服务器
需要具备以下基本功能:
1. 建立连接:能够接受来自客户端的连接请求,并建立TCP连接。
2. 接收请求:通过建立的连接,接收客户端发送的HTTP请求。这包括请求行、请求头和请求体。
3. 解析请求:对收到的HTTP请求进行解析,理解客户端的请求类型(如GET、POST、PUT等)以及请求的资源(通过URI标识)。
4. 处理请求:根据请求类型和资源,执行相应的操作。这可能包括检索静态资源(如HTML文件、图片等),执行服务器端脚本,或者与其他服务器进行通信(如通过API请求)。
5. 访问资源:在处理请求时,可能需要访问服务器上的文件系统或其他资源。
6. 构建响应:生成HTTP响应,包括状态码(如200 OK、404 Not Found等)、响应头和响应体。
7. 发送响应:将构建好的响应通过建立的连接发送回客户端。
8. 维持连接:对于持久连接(如HTTP/1.1中的Keep-Alive),需要维持连接状态,以便于客户端可以发送多个请求。
9. 处理并发:对于多用户同时访问的情况,Web服务器需要能够处理并发请求,这通常通过多线程或异步处理实现。
10. 记录日志:记录HTTP事务的详细信息,包括请求和响应的头部、客户端的IP地址、请求时间等,这对于监控服务器性能和安全性至关重要。
11. 安全性:确保传输的数据安全,可能包括数据加密(如使用HTTPS)、防止常见的安全威胁(如跨站脚本攻击、SQL注入等)。
12. 配置和扩展性:支持配置文件的修改,以便于调整服务器的行为,同时也支持扩展,如通过插件或模块增加新的功能。
这些功能确保了Web服务器可以正确、有效地处理来自客户端的请求,并提供所需的服务。不同的Web服务器软件(如Apache、Nginx、IIS等)在实现这些功能时可能有不同的方式和优缺点。
NanoHTTPD特征
只有一个Java文件,提供HTTP 1.1支持。
没有固定的配置文件、日志记录、授权等。(如果需要,请自行实现。不过,错误会传递给 java.util.logging。)
支持 HTTPS (SSL)。
对 cookie 的基本支持。
支持GET和POST方法的参数解析。
对 HEAD、POST 和 DELETE 请求的一些内置支持。不过,您可以轻松实现/自定义任何 HTTP 方法。
支持文件上传。对于小型上传使用内存,对于大型上传使用临时文件。
从不缓存任何东西。
默认情况下不限制带宽、请求时间或同时连接。
所有标头名称都转换为小写,因此它们在浏览器/客户端之间不会有所不同。
持久连接(连接“保持活动”)支持允许通过单个套接字连接提供多个请求。
网络套接字
在 Firefox、Chrome 和 IE 上进行了测试。
网络服务器
默认代码提供文件并显示(在控制台上打印)所有 HTTP 参数和标头。
支持动态内容和文件服务。
文件服务器支持目录列表index.html和index.htm.
文件服务器支持部分内容(流式传输和继续下载)。
文件服务器支持 ETag。
文件服务器对没有/.
文件服务器还可以提供很长的文件,而无需内存开销。
包含最常见 MIME 类型的内置列表。
运行时扩展支持(服务特定 MIME 类型的扩展)- 服务 Markdown 格式文件的示例扩展。只需在 Web 服务器类路径中包含扩展 JAR 就足以加载扩展。
通过参数 实现简单的CORS支持--cors
--cors:激活 CORS 支持,Access-Control-Allow-Origin将设置为*。
--cors=some_value:Access-Control-Allow-Origin将被设置为some_value.
默认情况下服务Access-Control-Allow-Headers: origin,accept,content-type
通过设置系统属性来设置的可能性Access-Control-Allow-Headers:AccessControlAllowHeader
_例子:_-DAccessControlAllowHeader=origin,accept,content-type,Authorization
可能的值:
CORS 参数示例
--cors=http://appOne.company.com
--cors="http://appOne.company.com, http://appTwo.company.com": 请注意双引号,以便两个 URL 被视为单个参数的一部分。
NanoHttpd数据统计
NanoHttpd数据评估
本站商娱网提供的NanoHttpd都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由商娱网实际控制,在2024年3月1日 12:22收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,商娱网不承担任何责任。