任意のページを取得するために、ASHさんのスクリプトを使ってい
ます。
ところが、どうにも取得できないページがあります。
ブラウザでは見れるのに、このスクリプトでは取得できません。
ダンプをとってみると、404not foundが返却されます。
想像ですが、この場合のアドレスは、「別名」なのでしょうか?
ブラウザでは見られるのだから、なにか方法があると思いますが、
その方法がわかりません。
ASHさんのスクリプトは、
http://ash.jp/perl/socket_http.htm
にあります。
たとえば、
http://www.icn.ne.jp/~akatuki/furu0.htm
http://www.icn.ne.jp/~furukawa/
は、このスクリプトでは読み取れません。
ここのプロバイダのサーバ上にあるHPは、全てそのようです。
また他のSPでも、このような所があります(少ないようですけど)。
こうなる理由と、対処方法(読み取る方法)をお願いします。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
> #$http = '1.1';
のシャープを外してないとか。
私が的外れかも。
ありがとうございました。
>私が的外れかも。
どころか、
これをはずしたら、ドンピシャ!
うまくいきました。
コード的に見ると、このサーバーはHTTP1.1しか
サポートしていないということですね。
1.1の判断ではじかれてelse{}を実行したけれど、
「なにそれ?」と、知らん顔されたということでしょう。
とすると、この判断の前にサーバーに、「あんたのVerは?」
って聴いて分岐させるべきだとおもうのですが、
その方法はあるのでしょうか?
No.3
- 回答日時:
>この判断の前にサーバーに、「あんたのVerは?」
>って聴いて分岐させるべきだとおもうのですが、
>その方法はあるのでしょうか?
Webサーバに適当なHTTP要求を送信すれば,それに対するWebサーバからのHTTP応答の中にHTTPバージョンを示す値が含まれていますので,それを検査することになります。CGIプログラミングの入門書に解説が載っているでしょう。
ただ,今回のご質問の場合は。
HTTP/1.0のWebサーバ,HTTP/1.1のWebサーバ,ともにそのWebページを取得できればいいという最も基本的なニーズですから,単にHTTP/1.1要求を送信すればよいはずです。
RFC2145「HTTPのバージョン番号の使い方と解釈について」を参照。
http://www.tech-web.net/note/RFC2145.html#version
ありがとうございます。
>Webサーバに適当なHTTP要求を送信すれば,それに対するWebサーバか
>らのHTTP応答の中にHTTPバージョンを示す値が含まれていますので
ダンプを取ってみましたので、404not foundを返したときでも、
ヘッダにそれが含まれているのは知っています。それを抜き出すのは
簡単なのですが、もっとスマートに取得できないかと、思った訳です。
>CGIプログラミングの入門書に解説が載っているでしょう。
私自身、Perlの入門書でHTTPプロトコルについて、Perlとの関連で
書かれたものは知りません。
CGIプログラミングは、特定の言語を指すものではないので、
他の言語の入門書には書いて有るのかも知れませんね。
プロトコルについてはあまりヨク知らないので、Perlに関連した入門書
で、HTTPに関して書かれた書籍があれば、ご紹介願います。
>HTTP/1.0のWebサーバ,HTTP/1.1のWebサーバ,ともにそのWebページを>取得できればいいという最も基本的なニーズですから,単にHTTP/1.1
>要求を送信すればよいはずです。
おっしゃるとうりです。
オリジナルでは、その部分がコメントアウトされていて、上手く
いかなかったことは、 osamuy(No.1)さんのご指摘の通りでした。
>RFC2145「HTTPのバージョン番号の使い方と解釈について」を参照。
>http://www.tech-web.net/note/RFC2145.html#version
ありがとうございました。
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- JavaScript イラストレーター、縦中横のショートカットをスクリプトを使って作成する方法 1 2023/04/19 11:15
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
- JavaScript Javascriptを使ってQRコード読み取り、取得した情報をPOSTしたいと思っています。 1 2023/04/28 15:18
- Excel(エクセル) ExcelのVBAでWordを読み取り専用で開いて、見たいページに自動で移動する方法を教えて頂きたい 4 2022/07/27 10:39
- 雑誌・週刊誌 のり付けされている雑誌の解体方法 3 2023/03/15 21:38
- 統計学 Rを用いた「繰り返しがある直交表実験計画法」の分析方法 8 2023/08/01 17:58
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- その他(ブラウザ) Edge、Chrome、FireFoxのパスワード記憶機能 2 2023/08/16 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cからシェルを起動し返り値をハ...
-
pythonスクリプトの停止方法に...
-
powershellで関数名を変更する...
-
シェルでsyntax errorがでてしまう
-
ADサーバにおけるログインID,PC...
-
VBSで自動ログインについて
-
vbs: オブジェクトがコレクショ...
-
Perlスクリプトで文字化けして...
-
Perlのライセンス
-
複数行に渡る文字列の置換
-
perlスクリプトのブラウザURLか...
-
ArduinoのジャイロモジュールMP...
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
ユーザー定義関数に#NAME?が返...
-
大量の標準モジュールを解放す...
-
VBAで別モジュールへの変数の受...
-
モジュールの最大数はいくつな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
"JScript"が見つかりません!
-
Cからシェルを起動し返り値をハ...
-
awkの処理速度を改善したい
-
VBScriptでCurrentDirectoryを...
-
Perlスクリプトで文字化けして...
-
VBSを利用して、IEのタブを自動...
-
シェルでsyntax errorがでてしまう
-
CシェルプログラミングをCygwinで?
-
[ASP]条件によってインクルード...
-
UWSCのスクリプトにラグが発生...
-
pythonスクリプトの停止方法に...
-
VBSで自動ログインについて
-
Perlのライセンス
-
perlスクリプトのブラウザURLか...
-
ADサーバにおけるログインID,PC...
-
TeraTermマクロでの出力キャッチ
-
cygwinでcshが認識されず困って...
-
vbs: オブジェクトがコレクショ...
-
PerlでUNIXのコマンドとパスワ...
-
cronでのPerlスクリプト実行
おすすめ情報