阅读:4641回复:6
崩溃,IE下可正常执行的PAC在Firefox和Opera下无效
公司内部网络中,访问外网需要通过代理,公司内部网站则不用。笔记本要经常带到家里办公,来回切换代理配置很麻烦,就自己编了一个PAC。如下
function FindProxyForURL(url, host) { if (isPlainHostName(host)) {return "DIRECT";} //本地地址直接访问 if (shExpMatch(url, "http://*.company.com.cn*")) {return "DIRECT";} //*.company.com.cn直接访问 if (shExpMatch(url, "http://10.*.*.*")) {return "DIRECT";} //10.*.*.*直接访问 if (shExpMatch(url, "http://192.168.*.*")) {return "DIRECT";} //192.168.*.*直接访问 if (shExpMatch(url, "http://*.company.intra*")) {return "DIRECT";} // *.company.intra直接访问 if (isInNet(myIpAddress(), "10.46.7.0", "255.255.255.128")) //如果IP地址为公司内网地址,则除以上地址以外,其他均采用代理服务器访问 {return "PROXY proxy.company.com.cn:80";} else {return "DIRECT";} } IE的代理路径如下: file://C:/Users/Lenovo/AppData/Local/proxy.pac Firefox的路径是: file:///C:/Users/Lenovo/AppData/Local/proxy.pac Opera的路径是: file://C:/Users/Lenovo/AppData/Local/proxy.pac 现在很奇怪的是:IE、Chrome、Safari这些用系统代理设置的,PAC正常发挥了作用,内网直接访问,外网走代理服务器;Firefox和Opera则一点效果也没有。原来应该通过代理连接的网址还是直接连接了。 感觉像是PAC语法或者设置有问题,导致Firefox和Opera根本就没有执行PAC。恳请各位高手指点下。 ps:虽说讨论了proxy,但是不涉及 番习习 土啬,应该不触犯版规吧?还望版主手下留情。 |
|
1楼#
发布于:2011-08-14 21:19
Firefox 的 proxy.pac 设置 URL 跟 IE 不一样,检查看看是不是弄错了。
|
|
|
2楼#
发布于:2011-08-14 21:19
file:///C://Users//Lenovo//AppData//Local//proxy.pac
试试 |
|
3楼#
发布于:2011-08-14 21:19
file://是协议,如同http:// ftp://等
/C:/是路径 在windows下写法是file:///c:/... 在linux下写法是file:///home/..... 很奇怪,楼主的ie的写法怎么会起作用..... |
|
4楼#
发布于:2011-08-14 21:19
firefox:
file:///C:\Users\Lenovo\AppData\Local\proxy.pac opera: C:\Users\Lenovo\AppData\Local\proxy.pac opera加上file://和file:///也可以吧。 |
|
|
5楼#
发布于:2011-08-14 21:19
首先感谢各位的帮忙!
自己找到问题原因了。 系统是Win7SP1,IE9,Chrome 13,firefox 5、opera 11.50,Safari 5.1。IE、Chrome、Safari是用系统的代理设置,Firefox和Opera用自己的代理设置。Win7系统默认开放了IPv6,导致myIpAddress()返回了错误的值,使得判断失败。 Firefox和Opera对于myIpAddress()处理,在同时开启了IPv4和IPv6协议时,是返回IPv6地址;在仅开启IPv4地址时,返回IPv4地址。微软曾经对PAC支持的函数做了扩充,添加了一系列函数支持IPv6。myIpAddress()始终返回IPv4地址,返回IPv6地址的是myIpAddressEx()。具体可参见下面的链接。 http://blogs.msdn.com/wndp/archive/2006 ... nInet.aspx 对于Firefox,可以将network.dns.disableIPv6设为true解决。而Opera的IPv6支持没有办法关闭,只好关闭系统的IPv6协议了。 如图,把Intenet 协议版本 6 (TCP/IPv6)前面的勾去掉就行。 描述:如图,把Intenet 协议版本 6 (TCP/IPv6)前面的勾去掉就行。 图片:Image.png |
|
6楼#
发布于:2011-08-14 21:19
学习啦 内网 还要 番习习 土啬 LZ真费脑筋
|
|