Я пытаюсь настроить proxy.pac
файл, который может использоваться для клиентов IE6. В основном это:
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*example.com*")) return "DIRECT";
return "PROXY 1.2.3.4:8080";
}
Этот файл сообщает браузеру, что любой клиент пытается перейти на хост, соответствующий "*example.com*"
следует использовать прямое соединение, в противном случае используйте прокси.
Это отлично работает практически в любом браузере, но IE6 никогда не соответствует shExpMatch
что бы я ни старался. я прочел этот и отключил кеш, как описано Вот, но безрезультатно.
Я уверен, что IE6 поддерживает shExpMatch
функция, но если кто-то захочет меня поправить, буду рад это услышать. Между прочим, это работает на WinXP SP2.
Я знаю, что вы уже решили это, но для тех, кто наткнется на это, в IE есть ограничение (по дизайну) для функции shExpMatch в файле PAC, в котором только * и? Поддерживаются подстановочные знаки регулярного выражения. Альтернативой является использование объекта регулярного выражения и вызов на нем тестового метода, передавая host или url в качестве параметра:
var regex = /*example.com*/;
if(regex.test(host))
return "DIRECT";
return "PROXY 1.2.3.4:8080";
Вот слегка измененный WPAD.DAT, который я использую на сайте Заказчика. Он отлично работает в IE6, без изменений ... (потому что они не дадут мне разрешения на обновление до IE8). Единственные изменения, которые я внес, заключались в том, чтобы скрыть доменные имена Заказчика.
function FindProxyForURL(url, host) {
if ( isPlainHostName(host) ) { return "DIRECT"; }
if ( shExpMatch(url, "https:*") ) { return "DIRECT"; }
if ( shExpMatch(url,"http://*.customer.domain.com")) { return "DIRECT"; }
if ( isInNet(host,"127.0.0.1", "255.255.255.255") ) { return "DIRECT"; }
if ( isInNet(host,"10.35.0.0", "255.255.0.0") ) { return "DIRECT"; }
if ( isInNet(host,"192.168.0.0", "255.255.0.0") ) { return "DIRECT"; }
return "PROXY proxy.customer.domain.com:8080";
}
Единственное различие, которое я вижу, заключается в том, что вы не соответствуете http: в начале, но это не имеет значения.
Вы не должны этого делать, но вы можете добавить операторы alert (), и IE6 будет их отображать. Таким образом вы сможете добиться некоторой поддержки при отладке.