首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Apache配置为将散列字符作为QUERY_STRING的一部分传递给CGI脚本。

将Apache配置为将散列字符作为QUERY_STRING的一部分传递给CGI脚本。
EN

Stack Overflow用户
提问于 2019-01-27 09:32:40
回答 1查看 158关注 0票数 1

我正在模拟一个通过HTML命令控制的嵌入式设备。控制器发出的URL如下

代码语言:javascript
复制
http://192.168.0.10/cgi-bin/aw_cam?cmd=QFT&res=1

这些会以特定的方式影响设备。我的目标是做一个设备的模拟器,所以我需要捕获和处理所有这样的请求。我已经成功地将Apache配置为调用我的脚本,并且我可以通过读取QUERY_STRING的值来访问"cmd=QFT&res=1“控制字符串。我在Ubuntu 16.04.5上使用Apache 2.4.18。脚本是用C++编写的。

我遇到的问题是,控制器发出的一些命令的形式如下:

代码语言:javascript
复制
http://192.168.0.10/cgi-bin/aw_ptz?cmd=#P80&res=1
http://192.168.0.10/cgi-bin/aw_ptz?cmd=#T50&res=1  

无论出于什么原因,无论是谁设计了命令结构,都决定使用#字符作为命令的一部分。但是由于'#‘分隔了URL的片段部分,它后面的信息永远不会到达我的脚本,它只接收"cmd=“。

参数后传递整个字符串,有没有办法?我的脚本吗?我不能更改客户端或协议,只能更改服务器端。

编辑: apache日志显示了整个URL (请参阅下面的日志文件部分),所以即使#应该是一个片段分隔符,它至少会将其写入日志文件,而不是cgi脚本。

代码语言:javascript
复制
192.168.0.9 - - [27/Jan/2019:00:21:10 +0000] "GET /cgi-bin/aw_ptz?cmd=#P53&res=1 HTTP/1.0" 200 151 "-" "-"
192.168.0.9 - - [27/Jan/2019:00:21:11 +0000] "GET /cgi-bin/aw_ptz?cmd=#P66&res=1 HTTP/1.0" 200 151 "-" "-"
192.168.0.9 - - [27/Jan/2019:00:21:11 +0000] "GET /cgi-bin/aw_ptz?cmd=#P99&res=1 HTTP/1.0" 200 151 "-" "-"
192.168.0.9 - - [27/Jan/2019:00:21:11 +0000] "GET /cgi-bin/aw_ptz?cmd=#P76&res=1 HTTP/1.0" 200 151 "-" "-"
EN

回答 1

Stack Overflow用户

发布于 2019-01-29 03:44:32

这似乎起作用了:

代码语言:javascript
复制
RewriteCond %{THE_REQUEST} \s(.*)#(.*)\s
RewriteRule ^ http://localhost:8000%1#%2 [P,NE]
ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/

(我让python simple http服务器监听localhost:8000以验证散列是否被正确传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54384362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档