问题标签 [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.
apache - Apache 模块 request_rec->args 无法处理 url 编码的实体
在我的 ap_hook_handler 中,当查询字符串的一部分包含 url 编码实体时,我遇到了 request_rec->args 的奇怪行为。
以下是我的发现:
场景 #1:对查询字符串中的第一个 'e' 进行编码:
结果:
r->uri: /test
r->args: "group= %mployees" (注意很多空格)
场景#2:编码第二个'e':
结果:
r->uri: /test
r->args: "group=employ 0.000000e-01s"
场景#3:编码最后一个'e':
结果:段错误
当我对路径的任何部分(不是查询字符串)进行 url 编码时,Apache 的行为:
场景#4:在路径中编码'e'而不是查询字符串:
结果:
r->uri: /test (预期)
r->args: NULL (预期)
为什么 'args' 和 'uri' 处理 url 编码的方式不同,如何在我的模块中获取规范化的查询字符串,就像我可以使用 'request_rec->uri' 一样?
apache - Apache 不解析自定义标头
Apache 似乎没有解析自定义标头
以下是 tcpdump 上的内容:
我在这里看到了customheader。但是,当我在钩子 apache 的标头解析器阶段的函数的调试器上解析它时,我得到了这个:
没有自定义标头
c - 将文件上传到 C 中的 apache 服务器(没有 Web 标头)
我正在开发网络服务器(Linux 中的 Apache 2.4)并尝试支持从客户端到服务器端的文件上传。我成功地在服务器端接收了文件,但是我在上传的文件内容中得到了一个额外的 web 标题,我想省略它。例如,我在上传 example.txt 时包含:
在服务器端文件中,我得到:
实际文件是二进制的,所以它应该包含没有添加数据的确切内容。
我使用了这些示例: mod_upload和mod_csv。
我的服务器端代码是:
任何想法如何更改代码以避免结果文件内容中的冗余标题/任何其他方式(/方法)在服务器中获取文件?
谢谢!
c - 获取 Apache C-Module 中的连接数
如何获得打开的连接数(有多少不同的浏览器试图访问服务器)。我试图查看request_rec
每个函数处理程序中可用的结构。
request_rec->connection->conn_config
听起来像是最相关的字段(类型ap_conf_vector_t
,但我不知道如何从中获取信息。
谢谢!
apache - 在 apache 模块之间共享数据
有没有办法在 apache 模块之间共享数据?
例子:
mod_a
进行计算并得到一些数字作为结果。mod_b
进行另一个计算,我需要将它与mod_a
.
这样做的方法是什么?
我试图通过r->notes
表格传递它,但没有成功。两个模块的数据都显示在日志中,但它们看不到彼此的数据。
PSmod_b
总是mod_a
在单个请求中完成处理后执行该工作。
c++ - Apache 模块共享内存对象
我能够创建包含结构的共享内存段,使用apr_shm_create
问题是当我尝试在此共享结构中创建类实例时(分段错误)。有没有办法在共享内存中分配自定义对象(和底层数据)?我想要做的是在所有 apache 进程之间创建带有字符串的共享队列。
提前致谢
c++ - Apache 模块命令解析器原型
我正在创建一个 Apache2 模块并遇到一个奇怪的编译问题。这是我用于解析名为“ analytics_ip ”的配置命令的函数原型:
这是包含指向此函数的指针的command_rec结构数组:
结构 command_rec 在头文件http_config.h中声明
当我关注cmd_func时,它会得到以下声明:
如果我没记错的话,这意味着“指向函数的指针返回指向 char 的指针并且不接受任何参数”。这怎么可能?命令解析函数必须接受至少一个参数,该参数包含与该函数对应的配置变量的模块值。
我正在使用 g++ 来编译这个模块。错误信息:
提前致谢
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=node1
10 次。每 10 次请求将由https://localhost:5006
.
我做错了什么?
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。我是否缺少任何头文件?
你能帮我解决这个问题吗?
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 文件,拒绝访问是安全的
你能帮我解决这个问题吗?