shExpMatch en PAC usa comodines, no expresiones regulares
Una regla de proxy puede parecer correcta pero no coincidir nunca, porque shExpMatch y las expresiones regulares de JavaScript usan lenguajes de patrón distintos.
En PAC, shExpMatch usa comodines al estilo del intérprete de comandos. Para subdominios de example.com:
if (shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}Use los puntos de conexión HTTP seleccionados por la política en estos valores de retorno; la lista de proxies HTTP ofrece candidatos para rutas públicas permitidas. El asterisco coincide con una secuencia de caracteres. No es un operador de repetición de expresiones regulares, así que un .*example.com con aspecto de regex cambia el significado.
Incluya el nombre exacto del padre de forma explícita cuando forme parte de la política:
if (host === "example.com" || shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}Usar *example.com en su lugar también aceptaría nombres que terminen en esas letras sin un punto separador. Eso amplía el conjunto más allá del límite de dominio previsto.
La base portátil de comodines de PAC incluye * y ?; las clases de caracteres varían según la implementación. Una expresión regular de JavaScript, en cambio, usa test() y sus propias reglas de anclaje y escape.
Coincida con la entrada prevista. host es un nombre de host, mientras que url incluye un esquema y puede haber sido saneada. Una regla de dominio no debería depender por accidente de una ruta que el navegador nunca proporciona.