2016-10-18 4 views
0

私はWebファイルマネージャを作成しています。最近、WebDavを実装するように私に提案されました。本当にいいアイデアだと思いました。HTTPリクエストがWebDavクライアントから来たかどうかを知る方法?

私は/webdavのような別のURLにwebdavを置くことを考えましたが、私は作成したウェブインタフェースとwebdavサーバを同じURLに保つことを考えています。

HTMLページまたはファイルを提供する必要があるかどうかを知るには、ブラウザまたはwebdavサーバーからアクセスするかどうかを知る必要があります。私はそれをどのように知るべきですか? User-Agentは十分ですか?

もしそうなら、どのユーザエージェントをWebDavクライアントとして扱うべきですか?

ありがとうございます!

+0

[Accepts Header]を見ることができるかもしれませんが、あなたの質問についてはわかりません。なぜあなたはGETのようなものについてDAVクライアントに対して異なる応答を提供する必要がありますか?ブラウザがHTMLページを要求するか、DAVクライアントがHTMLを要求する場合、HTMLを取得する必要がありますか?あるいは、何かブラウザが 'foo.ph'pを要求し、HTMLを取得し、DAV Clientがソースコードを取得する' foo.php'を要求するのでしょうか? – Doon

+0

最後の@Doon! Webインターフェイスは、ファイルの編集、ファイルの削除、その他すべての操作を行うことができます。それはファイルマネージャ+エディタです。だから私はGETのために異なる応答が必要です。 :) –

答えて

1

認証されたものと認証されていないもののようなものを使用して判断することができますが、@evertではこれを行わないと言います。また、分散オーサリング機能の非存在下でDAV仕様(RFC 2518)(http://www.webdav.org/specs/rfc2518.html

を読み出し、URI 名前空間にソースリソース(単数または複数)のないマッピングがないことが許容されます。実際、ソースリソースへのアクセスを防止することは、望ましいセキュリティ上のメリットが です。ただし、ソース リソースのリモート編集が必要な場合は、ソースリソースにURI名前空間の の場所を指定する必要があります。 一般に、サーバーがプロセスリソースの要求からソースリソースの要求を区別することは不可能であるため、このソースの場所は、生成された出力が取り出せる場所の であるべきではありません。 は、多くの場合、ソースリソースと 出力リソースの間に多対多の関係があります。

重要な部分は、ここではこのソースロケーション>は、サーバが要求を区別するために、一般的にそれが不可能であるため>生成される出力は、回収された場所のいずれかであってはならない

あります>プロセス出力リソースの要求からのソースリソース

+0

もう一度@Doon!だから、私が@Evertに言ったように、私は 'http:// localhost/folder/file.txt'と' http:// localhost/webdav/folder/file.txt'を使うのがベストプラクティスだと思います。最初のものはWebインターフェイス用で、もう1つはDavクライアント用です。私は正しい? –

+0

ありがとうございます。一意のURIです(名前は問題ではなく、一意です) – Doon

+0

ありがとう@Doon! :) –

1

これを行わないでください。 User-Agentを使用してサーバーの動作を判断するのは一般的には悪い考えですが、WebDAVにとっても悪い考えです。一部のクライアントは2つ以上のユーザーエージェントを使用し、一部のクライアントはかなり一般的な(カール)ものを使用し、他のクライアントはまったく1つを提供しません。 WebDAVクライアントを構築するだけで、受け入れられたユーザーエージェントの1つを模倣しない限り動作するとは限らないため、システムが脆くなり、エラーや非標準になりやすくなります。

これは、あなたがまだUser-Agentを避けて逃げることができるかもしれないと言われています。 WebDAVはPROPFIND HTTPメソッドを使用して、WebDAVクライアントが接続しているかどうかを正確に判断できます。

はしかし、それはまだファイルを取得して保存するだけでなくGETPUTを使用して、あなたは厳しいのWebDAV階層でシステムを構築しなければなりません。既存のurl構造体が既に1:1でファイルシステムの階層構造と一致している場合、これは機能するかもしれません。

いくつかの点では、WebDAVサーバーを構築しているだけで、コレクションのhtmlインデックスがありますが、これは実際には多少一般的です。

最後に、独自のライブラリを使用する代わりにライブラリを使用することを検討してください。

出典:私はpopular webdav frameworkの著者です。

+0

こんにちは@回避!ご回答有難うございます。 Goと独自のwebdavライブラリを使用しています。今のところ、ディレクトリ構造はファイルシステムとまったく同じです。しかし、ブラウザのファイルを要求しているときにhtmlを表示したいので、ユーザはブラウザ上で(インタフェースを使って)すぐに編集することができます。 –

+0

1つの解決策は、web davサーバーを別のURLに保ち、そのパスにAjaxリクエストを作成することです。 –

+0

例: 'http:// localhost/folder/file.txt'は私のWebインターフェイスをエディタとそのすべてのものと共に表示します。しかし、 'http:// localhost/webdav/folder/file.txt'にアクセスすると、web davサーバにアクセスします。 –

関連する問題