我想把http://www.baidu.com/hi/down/abcde.rar加密成http://alsdkasdflasdkfsdksadda,
于是我用DES加密,但是加密以后浏览器老是报Bad Request (Invalid URL)错误,现在有两个问题,只有解决一个就可以了
1,URL有长度限制么?如果有那么超长的URL怎么处理?
2,有这么一个字符串函数么?加密以后其长度不变

解决方案 »

  1.   

    加密后服务器就不认识你的url了,怎么response你的request呢?
      

  2.   


    重写url是网页程序的问题,但现在是你把url改了,浏览器可不具备重新功能,他就请求出错了,你要做的不是加密url,而是加密url中的参数Bad Request (Invalid URL)
    去网上搜索一下这话的意思吧
      

  3.   

    你URL再怎么加密重写但是最基本的域名应该还是要保留的吧。不能把根都切了那还搞个球啊。
      

  4.   

    是呀,加密的话只能加密参数,加密所有的域名,浏览器肯定找不到的。而且加密参数的算法要可逆,不然就得不到参数了。微软 Internet Explorer:
    微软帮助网站上说IE7之前(包括IE7)的浏览器,对URL的最大长度限制是2,083个字符。Firefox:
    对于Firefox 1.5.x,地址栏能显示的URL最大长度是65,536个字符,但实际上有效的URL最大长度不少于100,000个字符。 
    对于Firefox 3.0.5,mozilla官方论坛上有人测试其URL长度限制为65,000个字符。
    也有人说Firefox可以支持URL高达2Gbyte的长度(参考),在data URL中可以运用到这样大数据量的URL。data URL是一种URL本身包含了实际数据的URL,比如一个图片、一个HTML网页或者全部的数据、代码等等。仅有Firefox支持data URL。
    data URL示例:
     <html>
      <body>
        <a href="data:text/html;charset=utf-8,%3C!DOCTYPE%20HTML%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20HTML%204.0%2F%2FEN%22%3E%0D%0A%3Chtml%20lang%3D%22en%22%3E%0D%0A%20%3Chead%3E%0D%0A%20%20%3Ctitle%3ETest%3C%2Ftitle%3E%0D%0A%20%20%3Cstyle%20type%3D%22text%2Fcss%22%3E%0D%0A%20%20%3C%2Fstyle%3E%0D%0A%20%3C%2Fhead%3E%0D%0A%20%3Cbody%3E%0D%0A%20%20%3Cp%3EThis%20is%20a%20data%20URL%3C%2Fp%3E%0D%0A%20%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E%0D%0A">This is a test</a>
      </body>
    </html  Safari:
    Safari最少支持80,000个字符长度的URL。 Opera:
    Opera官方网站上说,Opera并没有强制限制URL的长度。
    网友测试Opera 9支持最少190,000个字都长度的URL,并且Opera 9的地址栏可以显示、编辑、复制和粘贴完整的URL串。 本文参考:
    【1】http://www.boutell.com/newfaq/misc/urllength.html
    【2】http://support.mozilla.com/tiki-view_forum_thread.php?comments_parentId=153230&forumId=1
    【3】http://forums.mozillazine.org/viewtopic.php?f=7&t=322458&start=0&st=0&sk=t&sd=a
    【4】http://support.microsoft.com/kb/q208427/
    【5】http://www.opera.com/support/kb/view/387/
      

  5.   

    不好意思,是我没有描述清楚在重写的时候
    http://www.xxx.com/down/aaaaaaaaaaaaaaaaaaaaaaaaaaaa.rar
    自动变为
    http://www.xxx.com/down.asp?cs=aaaaaaaaaaaaaaaaaaaaaaaaaaaa当aaaaaaaaaaaaaaaaaaaaaaaaaa的参数长度比较小的时候没有问题,但是一但很长了,就出现上面说的那个问题Bad Request (Invalid URL)
      

  6.   

    还有一个奇怪的事情就是,我在本机开发的时候,怎么调试都没有问题,但是一上传到服务器就出现这个问题了,同样做URL重写的另外一个没有问题
      

  7.   

    问题找到了,是因为服务器是把aaaaaaaaaaaaaaa.rar作为一个文件来处理,一但他的长度超过了245就会出现Bad Request (Invalid URL)的错误,这个跟URL的长度是没有关系的。
    我的处理方式:
    在重写的时候,用到两个参数,在接收的时候再合并到一起,这样就避免文件名过程的现象了,
    这个问题从昨天搞到现在才搞定,呵呵
    http://www.xxx.com/down/p1=aaaaaaaaaaaaaa&p2=aaaaaaaaaaaaaa.rar 
      

  8.   

    http://www.fee123.com 这个网站就是我用这个方式来处理的,大家看看,千万不要攻击哦,谢谢!