実行可能なバックエンドをサポートしない、サーバーへのJavaScript / jQueryコールバック

javascript jquery webserver

同僚のある技術者が本日、私にjQuery(あるいは一般的にはJavaScript)が実行可能コードを使わずに元のソースにpingを送ってファイルシステムに関する情報を取得できるかどうか尋ねた。 AJAX、ASP.NET、またはその他の実行可能テクノロジを使用しないと、IISがこれを可能にする方法はないと私は考えています。 言い換えれば、静的なHTMLページから実行されているJavaScriptが、それが由来するWebサーバーに関する情報を引き戻すことができないということです。

繰り返しになりますが、これはひどい答えです。セキュリティ上の理由から、これは不可能です。 しかし、私はすべてを知っているJavaScript / jQueryの専門家であるとは主張していないので、私はこれをあなた方全員に公開します。 あなたがこれを行うことができる方法を知っているならば、またはあなたがそれが行うことができないことを確実に知っているならば、どちらの方法でもあなたのフィードバックに感謝します。

ありがとうございました。

  • ジェシー・ホール

” ” ‘

これまでのソリューションでは、すべてASP、ASP.NET、PHP、Webサービスなどのサーバーサイドテクノロジが必要です。 問題をわかりやすく説明するために、正確なシナリオを紹介します。

IIS Webサーバー上のWebサイトには、HTML / CSS / JavaScriptのみが存在する10個のHTMLファイルのグループがあります。 ASP、ASP.NET、PHP、およびその他のすべてのサーバー側テクノロジは許可されていません。 これら10個のHTMLファイルには、名前の変更やサイズの変更などがあります。 解決する必要がある問題はその時点でそのディレクトリにあるファイルについての情報を表示することです(ディレクトリ参照を有効にしないで、私は追加します)。

  1. IISからの要求fileinfo.html

  2. ブラウザにfileinfo.htmlが含まれています

  3. fileinfo.htmlには、ファイルとサイズの情報を取得するためにIISにコールバックするJavaScript / jQueryがあります。

  4. IISはファイルに関するJavaScript / jQuery情報にレポートします。

私は、ステップ3がある種のサーバーサイド技術を使わずには可能ではないと思います。 しかし、私は私が聞いたことのある新しいハックがないことを確認したいだけです。

  0  0


ベストアンサー

編集

質問の後半で説明した特定のシナリオでは、* no *と言う必要があります。 Javascriptだけを使ってサーバー上のファイル数、サイズ、および名前を決定する方法がわかりません。

” ” ‘

以前、私はあなたがあなた自身がほとんどのブラウザのJavascript実装で利用可能な XML HTTP Requestオブジェクトを利用することを許可するという条件であなたができると述べたサーバー上で実行されているサーバーソフトウェアを識別することによって、_some_ファイルシステム情報を推測できるようにすること(つまり、 IISの場合はおそらくNTFSであり、Appacheの場合はおそらくext3です。 等々).. 確かに、完璧な解決策ではなく、せいぜいハッキーな解決策ではありません。

http://www.jibbering.com/2002/4/httprequest.html[このページはXML HTTP Requestオブジェクトの使用方法を示しています]。 特に、HTTPヘッダーを取得する方法を示す例を探してください。 そこから、あなたがする必要があるのはあなたのjavascriptファイルをホスティングしているサーバーに要求をしてそれからあなたが要求したファイルをホスティングしているサーバーについて教えてくれる* Server *ヘッダー行を調べることです。

1


いいえ、Webサーバーが何らかの理由でこの情報を公開しない限り不可能です。 あなたが言うように、実行可能ファイルはどこかの時点で実行される必要があります(静的な情報を公開するか要求の時にその場でチェックするために)。 AJAXはバックエンドにURLを持つことで機能します。 ファイルシステム情報を取得するためのURLがない場合、それは不可能です。

上記の回答は、情報をURLに発行するために、ある時点で実行可能コードを実行することをすべて可能にする方法を概説したものです。 質問者の出身であるという点が「ハウツー」ではなくセキュリティであることを確認するために、質問を2回読む必要がありました。

1


私が考えることができる唯一のことは、サーバーサイドのスクリプティングに頼らずにうまくいくかもしれないことです。ブラウザでディレクトリを参照して隠しフレームを使用してから、隠しフレームのHTMLを解析して情報を取得するJavaScriptを使用することです。それから必要です。

しかしこれはハックであり、あまり良い解決策ではありません。 それはあなたのディレクトリなしのブラウジング規定に違反するかもしれません – それはインデックス可能であり、あなたが隠しフレームでそれを表示しているので、ディレクトリは平均的なユーザによって直接見ることはできませんそのディレクトリの内容を表示します。

1


ファイル名のリストを事前に知っているか、Javascriptで適切なファイル名を生成/列挙できる場合は、XMLHttpRequestオブジェクト、またはもっと簡単に言えばjQuery `を使用して、HTTP HEAD要求を使用して確実に存在、変更時刻、サイズをテストできます。 $ .ajax`関数:

urls = ["/file1.html"、 "/file2.html"、 "..."] $ .each(URL、関数(URL){$ .ajax(タイプ: "HEAD"、URL:URL、完全:) function(data){var headers = XMLHttpRequest.getAllResponseHeaders()#...必要なファイル情報を推測するには、 'Content-Length'、 'C​​ontent-Type'などを使用して、ヘッダーを繰り返し処理します。)}))

ただし、ファイル名を事前に認識できない場合やプログラムで生成できない場合は、問題のディレクトリに対してDAVがオンになっていない限り、ファイル名を列挙することはできません。 ただし、PHPやASPを使用したくないホストもDAVサービスを提供することはできません。 (ただし、DAVがある場合は、 PROPFIND HTTP動詞を使用してディレクトリの内容をXMLとして取得し、そのXMLをクライアントのJavascriptで処理することができます。)

1


あなたがする必要があるのはウェブサーバー情報を含みそしてそれをhtmlファイルに固執する方法を見つけることです。

統計情報で静的ページを更新するcronジョブを使うことも、動的に生成するために “を使うこともできます。

私は特にIISについて話すことができますが、Tomcatは何かこれをリストするステータスXMLフィードを持っています:http:// localhost:8080 / manager / status?XML = true

0


その情報を提供する目的でサーバー上のコードを設定しなくても「ファイルシステムに関する情報」を取得できる範囲は、URLパスに含まれる「ファイルシステムに関する情報」と、可能であればインデックスだけです。

0


タイトルとURLをコピーしました