无法使用 POST 方法更新 Apache 中的文件

无法使用 POST 方法更新 Apache 中的文件

我想使用 POST 方法更新 Apache 服务器中的文件。我在虚拟主机配置文件中做了以下事情:

Alias /csp1 /opt/data/logs/csp
<Directory /opt/data/logs/csp/>
        Options FollowSymLinks
        Order allow,deny
        Allow from all
        AllowOverride All
Require all granted
        Require method POST GET
</Directory>
RewriteEngine On
RewriteRule ^/csp_log.txt$ /csp1/csp_log.txt [PT,L]

我正在使用curl命令从服务器进行测试。我可以读取文件,但无法更新文件。

curl -v -A "Mozilla" -H "Host: st-test.com"  --request POST --data '{"username":"xyz","password":"xyz"}'  http://127.0.0.1:443/csp_log.txt

About to connect() to 127.0.0.1 port 443 (#0)
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 443 (#0)
> POST /csp_log.txt HTTP/1.1
> User-Agent: Mozilla
> Accept: */*
> Host: st-test.com
> Content-Length: 35
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 35 out of 35 bytes
< HTTP/1.1 200 OK
< Date: Wed, 11 Dec 2019 11:18:04 GMT
< Server: Apache/2.4.6 (CentOS) Communique/4.3.2
< Last-Modified: Wed, 20 Nov 2019 07:05:16 GMT
< Accept-Ranges: bytes
< Content-Length: 6
< Cache-Control: max-age=0
< Expires: Wed, 11 Dec 2019 11:18:04 GMT
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: deny
< X-Content-Type-Options: nosniff
< Strict-Transport-Security: max-age=15768000; includeSubDomains;
< Content-Type: text/plain; charset=UTF-8
<
ttest
* Connection #0 to host 127.0.0.1 left intact

答案1

它的工作方式与您想象的不同。Apache 绝不会仅仅因为您将某些内容 POST 到该文件就写入该文件。相反,对于(大多数)静态文件,请求主体将被丢弃,并且请求将像 GET 一样进行处理。

如果你想上传文件,你需要某种服务器端逻辑(例如,PHP 文件),处理上传请求,并写入文件。

相关内容