回答:
ロケーションヘッダーフラグを使用します。
curl -L <URL>
man curl
:「認証が使用される場合、curlは資格情報を初期ホストにのみ送信します。<...>これを変更する方法については--location-trustedも参照してください。」
同様の問題がありました。私はそれがコメンターの1人を助けるかもしれないと思うので、ここに私の解決策を投稿しています。
私にとっての障害は、ページがログインを必要とし、JavaScriptを介して新しいURLを提供してくれることでした。これが私がしなければならなかったことです:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>
j_usernameとj_passwordは、私のWebサイトのログインフォームのフィールドの名前です。ユーザー名フィールドの「名前」とパスワードフィールドの「名前」が何であるかを確認するには、Webページのソースを開く必要があります。その後、新しいURLが埋め込まれたjavaスクリプトを含むhtmlファイルに移動します。これを解析したら、新しいURLで再送信します。
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>
前述のように、リダイレクトを追跡するには、フラグを使用する-L
か--location
:
curl -L http://www.example.com
ただし、リダイレクトの数を制限する場合は、パラメータを追加します--max-redirs
--max-redirs <num>
許可されるリダイレクトの最大数を設定します。が使用されている場合
-L
、--location
このオプションを使用して、curlが「不条理」なリダイレクトを行わないようにすることができます。デフォルトでは、制限は50リダイレクトに設定されています。このオプションを-1に設定すると、制限がなくなります。このオプションを複数回使用すると、最後のオプションが使用されます。