问题标签 [apache-modules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
358 浏览

apache - Apache 模块 request_rec->args 无法处理 url 编码的实体

在我的 ap_hook_handler 中,当查询字符串的一部分包含 url 编码实体时,我遇到了 request_rec->args 的奇怪行为。

以下是我的发现:

场景 #1:对查询字符串中的第一个 'e' 进行编码:

http://localhost/test?group=%65mployees

结果:
r->uri: /test
r->args: "group= %mployees" (注意很多空格)

场景#2:编码第二个'e':

http://localhost/test?group=employ%65es

结果:
r->uri: /test
r->args: "group=employ 0.000000e-01s"

场景#3:编码最后一个'e':

http://localhost/test?group=employe%65s

结果:段错误

当我对路径的任何部分(不是查询字符串)进行 url 编码时,Apache 的行为:

场景#4:在路径中编码'e'而不是查询字符串:

http://localhost/t%65st

结果:
r->uri: /test (预期)
r->args: NULL (预期)

为什么 'args' 和 'uri' 处理 url 编码的方式不同,如何在我的模块中获取规范化的查询字符串,就像我可以使用 'request_rec->uri' 一样?

0 投票
0 回答
163 浏览

apache - Apache 不解析自定义标头

Apache 似乎没有解析自定义标头

以下是 tcpdump 上的内容:

我在这里看到了customheader。但是,当我在钩子 apache 的标头解析器阶段的函数的调试器上解析它时,我得到了这个:

没有自定义标头

0 投票
2 回答
757 浏览

c - 将文件上传到 C 中的 apache 服务器(没有 Web 标头)

我正在开发网络服务器(Linux 中的 Apache 2.4)并尝试支持从客户端到服务器端的文件上传。我成功地在服务器端接收了文件,但是我在上传的文件内容中得到了一个额外的 web 标题,我想省略它。例如,我在上传 example.txt 时包含:

在服务器端文件中,我得到:

实际文件是二进制的,所以它应该包含没有添加数据的确切内容。

我使用了这些示例: mod_uploadmod_csv

我的服务器端代码是:

任何想法如何更改代码以避免结果文件内容中的冗余标题/任何其他方式(/方法)在服务器中获取文件?

谢谢!

0 投票
1 回答
160 浏览

c - 获取 Apache C-Module 中的连接数

如何获得打开的连接数(有多少不同的浏览器试图访问服务器)。我试图查看request_rec每个函数处理程序中可用的结构。
request_rec->connection->conn_config听起来像是最相关的字段(类型ap_conf_vector_t,但我不知道如何从中获取信息。

谢谢!

0 投票
1 回答
77 浏览

apache - 在 apache 模块之间共享数据

有没有办法在 apache 模块之间共享数据?

例子:

  1. mod_a进行计算并得到一些数字作为结果。
  2. mod_b进行另一个计算,我需要将它与mod_a.

这样做的方法是什么?

我试图通过r->notes表格传递它,但没有成功。两个模块的数据都显示在日志中,但它们看不到彼此的数据。

PSmod_b总是mod_a在单个请求中完成处理后执行该工作。

0 投票
1 回答
394 浏览

c++ - Apache 模块共享内存对象

我能够创建包含结构的共享内存段,使用apr_shm_create问题是当我尝试在此共享结构中创建类实例时(分段错误)。有没有办法在共享内存中分配自定义对象(和底层数据)?我想要做的是在所有 apache 进程之间创建带有字符串的共享队列。

提前致谢

0 投票
2 回答
383 浏览

c++ - Apache 模块命令解析器原型

我正在创建一个 Apache2 模块并遇到一个奇怪的编译问题。这是我用于解析名为“ analytics_ip ”的配置命令的函数原型:

这是包含指向此函数的指针的command_rec结构数组:

结构 command_rec 在头文件http_config.h中声明

当我关注cmd_func时,它会得到以下声明:

如果我没记错的话,这意味着“指向函数的指针返回指向 char 的指针并且不接受任何参数”。这怎么可能?命令解析函数必须接受至少一个参数,该参数包含与该函数对应的配置变量的模块值。

我正在使用 g++ 来编译这个模块。错误信息:

提前致谢

0 投票
1 回答
1498 浏览

apache - Apache / 使用 JSESSIONID 定义粘性

我尝试在 Apache 中定义粘性。这是proxy.conf中的定义:

或者:

我尝试使用 url 查询参数来实现粘性(因为我知道不建议覆盖 cookie)。正如 Apache 文档中所写:

实现粘性的第二种方式是 URL 编码。Web 服务器在请求的 URL 中搜索查询参数。使用stickysession 再次指定参数的名称。该参数的值用于查找具有等于该值的路由的成员工作人员。由于提取和操作响应中包含的所有 URL 链接并不容易,因此向每个链接添加参数的工作通常由生成内容的后端完成。在某些情况下,使用 mod_substitute 或 mod_sed 通过 Web 服务器执行此操作可能是可行的。但是,这可能会对性能产生负面影响。

我在邮递员中发送了 10 次以下请求:

我注意到请求被传递给node1(5 个请求)和node2(还有 5 个请求)。但是我定义了stickysession,所以它应该选择node1,并且每次都去这个节点。

我的目标是客户端将发送请求https://{{myserver}}/doc?jsessionid=nodeX,请求将传递给nodeX不使用cookie..,仅使用粘性是URL编码)。

例如,客户端发送请求https://{{myserver}}/doc?jsessionid=node110 次。每 10 次请求将由https://localhost:5006.

我做错了什么?

0 投票
1 回答
1945 浏览

c - 从 apache 模块读取 POST 参数

我正在尝试从 apache c 模块中读取 POST 参数。

这是我正在使用的代码:

我已经从 apache 网站复制了阅读帖子功能: https ://httpd.apache.org/docs/2.4/developer/modguide.html#snippets

尝试编译模块时出现以下错误:

mod_example.c:82:9:错误:使用未声明的标识符 'ap_form_pair_t' ap_form_pair_t *pair = (ap_form_pair_t *) apr_array_pop(pairs);

apxs 无法识别 ap_form_pair_t。我是否缺少任何头文件?

你能帮我解决这个问题吗?

0 投票
0 回答
132 浏览

c - 您无权访问此服务器上的 /asd

我正在使用 apache 服务器版本 2.4

我已通过在配置期间指定 --prefix 将 apache 安装到自定义位置。

我在 mac os x 小牛队。

我正在使用用 c 编写的 apache 模块。我正在关注官方网站http://httpd.apache.org/docs/2.4/developer/modguide.html上的教程

我安装了 mod_example.c 下给出的模块:代码如下

我添加了我的 Set Handler 如下

当我尝试访问 localhost/ 时,我得到“它有效!” 屏幕。

但是当我尝试访问 localhost/asd 之类的 localhost 中的某些路径时,我收到以下错误

禁止的

您无权访问此服务器上的 /asd。服务器无法读取 htaccess 文件,拒绝访问是安全的

你能帮我解决这个问题吗?