demimule
小狐狸
小狐狸
  • UID32234
  • 注册日期2010-03-08
  • 最后登录2014-02-17
  • 发帖数11
  • 经验14枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
阅读:4641回复:6

崩溃,IE下可正常执行的PAC在Firefox和Opera下无效

楼主#
更多 发布于:2011-08-14 21:19
公司内部网络中,访问外网需要通过代理,公司内部网站则不用。笔记本要经常带到家里办公,来回切换代理配置很麻烦,就自己编了一个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,但是不涉及 番习习 土啬,应该不触犯版规吧?还望版主手下留情。
jnlyu
狐狸大王
狐狸大王
  • UID10304
  • 注册日期2005-12-04
  • 最后登录2015-06-17
  • 发帖数304
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2011-08-14 21:19
Firefox 的 proxy.pac 设置 URL 跟 IE 不一样,检查看看是不是弄错了。
AppNavi手机应用官方微博 介绍最新的密室逃脱游戏!
http://weibo.com/appnavi
kain
小狐狸
小狐狸
  • UID26973
  • 注册日期2008-11-09
  • 最后登录2011-10-28
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2011-08-14 21:19
file:///C://Users//Lenovo//AppData//Local//proxy.pac
试试
havanna
狐狸大王
狐狸大王
  • UID22502
  • 注册日期2008-01-01
  • 最后登录2015-10-20
  • 发帖数544
  • 经验14枚
  • 威望0点
  • 贡献值2点
  • 好评度0点
3楼#
发布于:2011-08-14 21:19
file://是协议,如同http://  ftp://等
/C:/是路径
在windows下写法是file:///c:/...
在linux下写法是file:///home/.....

很奇怪,楼主的ie的写法怎么会起作用.....
ahlch
小狐狸
小狐狸
  • UID31503
  • 注册日期2010-01-02
  • 最后登录2012-06-14
  • 发帖数61
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
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:///也可以吧。
leungxh
demimule
小狐狸
小狐狸
  • UID32234
  • 注册日期2010-03-08
  • 最后登录2014-02-17
  • 发帖数11
  • 经验14枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
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

如图,把Intenet 协议版本 6 (TCP/IPv6)前面的勾去掉就行。
bobnemo
小狐狸
小狐狸
  • UID29702
  • 注册日期2009-07-17
  • 最后登录2012-04-14
  • 发帖数39
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2011-08-14 21:19
学习啦 内网 还要 番习习 土啬 LZ真费脑筋
游客

返回顶部