我正在为浏览器编写.pac文件。我希望浏览器检查我输入的网址是否符合规则。
function FindProxyForURL(url, host) {
url=url.toLowerCase();
host=host.toLowerCase();
debugPAC ="PAC Debug Information\n";
debugPAC +="-----------------------------------\n";
debugPAC +="Machine IP: " + myIpAddress() + "\n";
debugPAC +="Hostname: " + host + "\n";
if (isResolvable(host)) {resolvableHost = "True"} else {resolvableHost = "False"};
debugPAC +="Host Resolvable: " + resolvableHost + "\n";
debugPAC +="Hostname IP: " + dnsResolve(host) + "\n";
if (isPlainHostName(host)) {plainHost = "True"} else {plainHost = "False"};
debugPAC +="Plain Hostname: " + plainHost + "\n";
debugPAC +="Domain Levels: " + dnsDomainLevels(host) + "\n";
debugPAC +="URL: " + url + "\n";
if (url.substring(0,5)=="http:") {protocol="HTTP";}
else if (url.substring(0,6)=="https:") {protocol="HTTPS";}
else if (url.substring(0,4)=="ftp:") {protocol="FTP";}
else {protocol="Unknown";}
debugPAC +="Protocol: " + protocol + "\n";
if (!shExpMatch(url,"*.(js|xml|ico|gif|png|jpg|jpeg|css|swf)*")) {alert(debugPAC);}
if(shExpMatch(url,"*://login.dangdang.com/images/bg/dataimg/dly_0807_01*"))
{
var noproxy=url;
alert("noproxy4simplejpg"+noproxy);
return "PROXY 192.168.0.101:808";
}
if(shExpMatch(url,"*://login.dangdang.com/script/sign_in2011.js"))
{
var noproxy=url;
alert("noproxy4js"+noproxy);
return "DIRECT";
}
if(shExpMatch(url,"*login.dangdang.com/*.gif*"))
{
var noproxy=url;
alert("noproxy4gif"+noproxy);
return "DIRECT";
}
if(shExpMatch(url,"*login.dangdang.com/*"))
{
var proxy=url;
alert("proxy4login"+proxy);
return "PROXY 192.168.0.101:808";
}
else
return "DIRECT";
}
问题是我想从浏览器而不是协议和主机接收完整的URL。但现在我只能通过测试接收url
https://www.login.dngdang.com/
,但我输入了https://www.login.dangdang.com/xxx
。怎么了?
答案 0 :(得分:0)
我看到您的网址使用HTTPS-https://www.login.dangdang.com/xxx
出于安全原因,默认情况下浏览器会剥离https:// URL的路径和查询组件。
在Chrome中,您可以通过将PacHttpsUrlStrippingEnabled设置为false来禁用此功能
在Firefox中,首选项为network.proxy.autoconfig_url.include_path。
浏览器剥离https:// URL的隐私和安全敏感部分 在代理解析期间将它们传递给PAC脚本(代理自动配置)之前。
为True时,启用安全性功能,并且https:// URL为 提交给PAC脚本之前已被剥离。通过这种方式 PAC脚本无法查看通常由 加密通道(例如URL的路径和查询)。
为False时,安全功能被禁用,并且PAC脚本为 隐式授予查看https://的所有组件的能力 网址。这适用于所有PAC脚本,无论其来源如何(包括 通过不安全的运输获取或不安全地发现的那些 通过WPAD)。
默认为True(启用安全功能)。
建议将其设置为True。将其设置为False的唯一原因是,如果它导致与现有PAC脚本的兼容性问题。