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()
2 ответа
Глядя на определения из http://findproxyforurl.com/pac-functions/, они имеют очень разные функциональные возможности. dnsDomainIs() использует точные доменные имена, такие как .google.com
в то время как shExpMatch() использует подобные оболочке строки с подстановочными знаками, такими как *.google.com
,
Теперь они выглядят очень по-разному, но с shExpMatch вы также можете сопоставлять элементы в структуре папок, например example.com/sub/folder/*
или же http://example.com/img/*.png
,
Первый соответствует только имени хоста без протокола, порта или вложенных папок, а второй соответствует целому URL. Тем не менее, вы можете использовать shExpMatch(), например dnsDomainIs(), но я не уверен, что если вы уязвимы, то случайно допустите URL-адрес, например google.com.example.com
за google.com
- dnsDomainIs() возвращает здесь false, shExpMatch() может возвращать true (не проверено, только догадка)
Остерегайтесь следующего в Firefox 52.0...
dnsDomainIs ("www.notmycompany.com", "mycompany.com") возвращает значение true dnsDomainIs("www.myCompany.com", "mycompany.com") возвращает значение false