0

curl を使用して Web サーバーにデータをアップロードしようとしています。以下に示すように、wiresharkを使用して、ブラウザーからサーバーに送信されたデータを分析しました。

POST /cgi-bin/upload.cgi HTTP/1.1
Host: 192.168.1.22
Connection: keep-alive
Content-Length: 2637
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://192.168.1.22
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/30.0.1599.101 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryn1sckmiVOVfCwUMQ
Referer: http://192.168.1.22/upload.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

以下に示すように、ブラウザが情報をアップロードするためにアクセスする Web ページを確認しました。

<form method="POST" enctype="multipart/form-data" action="http://192.168.1.22/cgi-bin/upload.cgi">
File to upload: 
<input type="file" name="theupload"><br>
Should it be updated?<input type="checkbox" name="configuration"><br>
<input type="submit" value="Press"> to upload the file!
</form>

私は使用しようとしました:

curl --referer http://192.168.1.22/upload.html -F theupload=@file1.xml -F config=on http://192.168.1.22:80/cgi-bin/upload.cgi

私の出力は

POST /cgi-bin/upload.cgi HTTP/1.1
User-Agent: curl/7.33.0
Host: 192.168.1.22
Accept: */*
Referer: http://192.168.1.22/upload.html
Content-Length: 2650
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------fd126312049d1f47

サーバーはHTTP/1.1 417 Expectation Failedを返します。curl を学習したばかりで、何をすればよいかわかりません。ブラウザー コマンドのヘッダーをできるだけ厳密にエミュレートする必要がありますか? それとも、おそらくそれを捨てているのは境界ですか?助けてくれてありがとう。

4

1 に答える 1

1

使ってみてくださいcurl -H "Expect:" ...

于 2013-10-22T01:02:23.093 に答える