Ubuntu 16.04でグローバルに、またはApache 2.4の単一の仮想ホストに対してのみPUT HTTPメソッドを有効にする方法を教えてください。いくつか試してみましたが、何も動作しません。 Jiraのリバースプロキシ設定があります。この設定は GET と POST では機能しますが、PUT では機能しません。簡単に言えば、
<VirtualHost *:443>
SSLEngine on
# JIRA Proxy Configuration:
<Proxy *>
Order deny,allow
Allow from all
AllowMethods GET POST PUT DELETE OPTIONS
</Proxy>
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
私の最初のアプローチはProxy *設定でした。
<Limit GET POST PUT DELETE OPTIONS>
Require all granted
</Limit>
その後私は試しました
<RequireAny>
Require method DELETE GET POST PUT OPTIONS
</RequireAny>
ついに私は試した
AllowMethods GET POST PUT DELETE OPTIONS
私はいつもこうやって
apachectl configtest
apachectl restart
何も動作しません。カールを介してPUT要求を行うたびに、次のようになります。
curl -H "Content-Type: application/json" -X PUT -d '{"comment": "I did some work here.","visibility": {"type": "group","value": "jira-developers"},"started": "2017-09-27T13:06:14.160+0000","timeSpentSeconds": 12000}' https:/hostname/rest/api/2/issue/blubb-11/worklog -vvvv
<snip>
> Content-Type: application/json
> Content-Length: 163
>
* upload completely sent off: 163 out of 163 bytes
< HTTP/1.1 405
< Date: Thu, 28 Sep 2017 14:23:45 GMT
< Server: Apache/2.4.18 (Ubuntu)
< X-AREQUESTID: 983x106858x1
< X-ASEN: SEN-4341829
< X-AUSERNAME: anonymous
< Allow: HEAD,POST,GET,OPTIONS
< X-Content-Type-Options: nosniff
< Content-Type: text/html;charset=UTF-8
< Content-Length: 0
</snip>
答え1
問題は、私が送信した間違った形式のJira API Restリクエストでした。要求が間違っている場合、JiraはRestメソッドがPUTをサポートしていても、多少誤解を招くような「Allow:HEAD、POST、GET、OPTIONS」を送信します。