公司的动网论坛从一装上就开始有问题。我从内网访问论坛一切正常,但我从外网访问的话,就无法发新贴。这个问题困扰了我好久好久,到处问都没有结果,同时我也看到很多和我有同样遭遇的人,也都一直在困惑中。后来我打算换个论坛,换成leadbbs的进不了后台,换成bbsxp的同样发不了贴,提示错误:来源错误。
前几天,培训主管问我论坛的事,其实我也想把论坛弄起来了。就又开始上网搜索解决办法!偶然看到是什么referer的问题,不太明白,就开始想别的解决办法。我想按照动网的错误找不到,那我就搜索bbsxp的错误看看可以不可以。搜索“来源错误”,搜索到一条关于bbsxp漏洞的文章,其中有这么一段话:
if instr(Request.ServerVariables("http_referer"),""&Request.ServerVariables("server_name")&"") = 0 then
error("<li>来源错误")
是http_referer的问题!可能是http_referer与server_name不相等,或者http_referer是null,才会出现来源错误的提示。Request.ServerVariables("HTTP_REFERER"是读取所访问页面的前一页地址。可能就是因为通过ISA Server redirect过来的请求没有HTTP_REFERER这个值,导致出错!
打开ISA Server Management,进入Web Publishing Rule,看到右边有2条发布过的Rule,双击,选Action,看到里面有一个checkbox没选。
Send the original host header to the publishing server instead of the actual one(specified above)
original host header ?是不是就是那个http_referer呢?(当然,我说得肯定不严谨。)那句英文的意思是发送原始的主机头以替换实际的(也就是isa server的)。我试着check了。确定退出。进入论坛,一切OK了!!!哈哈!
至今我还不知道为什么论坛会做这些限制,也不太明白原理是什么。这个我还要再学习一下。
后记:就一个checkbox,呵呵,困扰了我这么长时间。这让我想起了一个IT笑话。一个公司电脑出现问题,请来专家处理,专家看了一下,就把一个checkbox给check上,问题就解决了。事后专家向公司要1000美元的酬劳。公司不解,问:那么简单的问题你凭什么要1000美元。专家回答:check只要1美元,但我知道在哪里check,这值999美元!!这就是脑力劳动和体力劳动的区别吧!