重写 HTTP 动词

重写 HTTP 动词

我有一个由 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 重写规则或其他模块以某种方式完成此操作吗?

相关内容