web-dev-qa-db-ja.com

PAC-JavaScript-shExpMatch()とdnsDomainIs()

shExpMatch()dnsDomainIs()の違いは何ですか

定義は言う:

_// dnsDomainIs()
// Evaluates hostnames and returns true if hostnames match. Used mainly to match and exception individual Host names.

// Example:
if (dnsDomainIs(Host, ".google.com")) return "DIRECT";



// shExpMatch()
// Attempts to match hostname or URL to a specified Shell expression and returns true if matched.

// Example:
if (shExpMatch(url, "*vpn.domain.com*") ||
      shExpMatch(url, "*abcdomain.com/folder/*"))
  return "DIRECT";
_

私がそれを正しく理解していれば

shExpMatch()-いくつかのワイルドカードを使用できます

dnsDomainIs()-正確な名前を使用できます

shExpMatch()dnsDomainIs()よりも優れていますか

7
Wakan Tanka

http://findproxyforurl.com/pac-functions/ の定義を見ると、機能が大きく異なります。 dnsDomainIs()は、.google.comなどの正確なドメイン名を使用しますが、shExpMatch()は、*.google.comなどのワイルドカードを含むシェルのような文字列を使用します。

現在は非常に異なって見えますが、shExpMatchを使用すると、example.com/sub/folder/*http://example.com/img/*.pngなどのフォルダー構造内のアイテムを照合することもできます。

最初のものはプロトコル、ポート、またはサブフォルダーなしでホスト名にのみ一致し、2番目のものはURL全体に一致します。ただし、dnsDomainIs()のようにshExpMatch()を使用できる場合もありますが、脆弱である可能性がある場合は、google.com.example.comのようなURLを誤って許可することによってgoogle.com --dnsDomainIs()が使用されるかどうかはわかりません。ここでfalseを返すと、shExpMatch()はtrueを返す可能性があります(テストされていません。ただの予感です)

5
ingofreyer