У меня есть REST API, который вызывается веб-приложением Javascript.
Файлы HTML / CSS и JS хранятся локально и обслуживаются Apache, а API REST вызывается с помощью директивы ProxyPass Apache на удаленном HTTP-сервере.
Это мой фактический файл 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 (при попытке сделать это я получаю сообщение об ошибке «Метод запрещен»).
К сожалению, у меня нет доступа к этому серверу, но я могу разработать API REST, предоставляемый им.
То, что я хотел бы сделать, это
- проверить, является ли входящий запрос DELETE или PUT
- установить HTTP-заголовок по запросу. X-ORIGINAL-REQUEST_METHOD: DELETE
- перенаправить запрос на удаленный сервер (192.168.0.23) как POST
Можно ли это как-то сделать с помощью правил переписывания Apache или другого модуля?