我有一个由 Javascript Web 应用程序调用的 REST api。HTML/CSS 和 JS 文件存储在本地并由 Apache 提供服务,REST api 由远程 HTTP 服务器上的 Apache 使用 ProxyPass 指令调用。这是我的实际 httpd.conf 文件(开发机器在 Windows 上):
<VirtualHost *:80>
ServerName myapp.com
DocumentRoot C:\myapp
<Directory />
Allow from all
</Directory>
RewriteLog C:\Temp\rewrite.log
RewriteLogLevel 0
RewriteEngine On
# Let apache serve static files
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
RewriteRule (.*) $1 [L]
ProxyPass / http://192.168.0.23:4567/ retry=0
ProxyPassReverse / http://192.168.0.23:4567/
ProxyPreserveHost on
</VirtualHost>
我的问题是远程服务器 (192.168.0.23) 不支持 DELETE 和 PUT 请求(如果我尝试这样做,我会收到“方法不允许”错误)。不幸的是,我无法访问该服务器,但我可以开发它公开的 REST API。我想要做的是
- 检查传入请求是否为 DELETE 或 PUT
- 在请求上设置 HTTP 标头 X-ORIGINAL-REQUEST_METHOD: DELETE
- 将请求以 POST 形式转发到远程服务器(192.168.0.23)
可以通过 Apache 重写规则或其他模块以某种方式完成此操作吗?