关于url地址中包含&、+、%等特殊字符时,地址无效

qcxl 2014-08-05 04:35:25
如题:url地址中出现特殊字符,尝试对特殊字符做转义编码,但是未能成功

求高手指点

注:将网站部署在局域网服务器,并在网站下添加虚拟路径,指向制定本地共享文件夹,提供文件下载

如下:http://10.190.0.0:108/doc/test+desc2.bmp 若文件名中出现+/&等特殊字符,会报404
对地址做转义编码后:http://10.190.0.0:108/doc%2Ftest%2Bdesc2.bmp 仍然不行
...全文
1285 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qcxl 2014-08-05
  • 打赏
  • 举报
回复
散分是个好习惯
qcxl 2014-08-05
  • 打赏
  • 举报
回复
引用 1 楼 fangzuli 的回复:

不能给服务器一个Parameters 替代你加的那个文件么,面向对象得透彻呀。。
引用 11 楼 xuzuning 的回复:
http://10.190.0.0:108/doc/test%2bdesc2.bmp
引用 10 楼 fangzuli 的回复:
那个应该是 2B
引用 9 楼 fangzuli 的回复:
URL=URL.replace(/\%/g,"%25");//g全局替换
十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
引用 3 楼 bubu8633 的回复:
通知后台我需要下载文件(get、post方法都可以),但是不要告诉具体的文件路径或名称,尤其是用get方法的时候。 让后端根据你传的值判断下载哪个文件。
引用 4 楼 KK3K2005 的回复:
不要特殊字符 换掉
谢谢大家的帮助,问题已经解决了,不是这些特殊字符的事,服务器那头没给我开权限,导致。。。唉,QA为这bug倒腾我好多天了 大家提到的转义相关知识也是很有帮组的
xuzuning 2014-08-05
  • 打赏
  • 举报
回复
http://10.190.0.0:108/doc/test%2bdesc2.bmp
万玩完顽完 2014-08-05
  • 打赏
  • 举报
回复
那个应该是 2B
万玩完顽完 2014-08-05
  • 打赏
  • 举报
回复
URL=URL.replace(/\%/g,"%25");//g全局替换
十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
qcxl 2014-08-05
  • 打赏
  • 举报
回复
引用 5 楼 fangzuli 的回复:
[quote=引用 2 楼 u013472677 的回复:] [quote=引用 1 楼 fangzuli 的回复:]

不能给服务器一个Parameters 替代你加的那个文件么,面向对象得透彻呀。。
Parameters代替,不是太明白,能说细点吗 我现在主要做前台,主要是html5+js操作这些[/quote] 你这个也是下载的一个图片呀,不需要这么下载吧?何况你把服务器文件路径写到客户端不是很安全的。。 Parameters...参数。。[/quote] 这里文件可能是任何格式的,通过手机端下载,服务器路径是写在后台的 前台只有加了个标记,通知后台去下载
qcxl 2014-08-05
  • 打赏
  • 举报
回复
引用 4 楼 KK3K2005 的回复:
不要特殊字符 换掉
哈哈,这个绝对好主意,可惜QA不让过,必须加特殊字符
qcxl 2014-08-05
  • 打赏
  • 举报
回复
引用 3 楼 bubu8633 的回复:
通知后台我需要下载文件(get、post方法都可以),但是不要告诉具体的文件路径或名称,尤其是用get方法的时候。 让后端根据你传的值判断下载哪个文件。
现在前台就是不加任何地址和名称,只给个标记让后台去下,但是后台不是还得去用文件对应的下载链接地址, 问题就出在后台通过下载地址下载时,地址无效,使用URLEncoder.encode()对地址转义编码,仍然不行
万玩完顽完 2014-08-05
  • 打赏
  • 举报
回复
引用 2 楼 u013472677 的回复:
[quote=引用 1 楼 fangzuli 的回复:]

不能给服务器一个Parameters 替代你加的那个文件么,面向对象得透彻呀。。
Parameters代替,不是太明白,能说细点吗 我现在主要做前台,主要是html5+js操作这些[/quote] 你这个也是下载的一个图片呀,不需要这么下载吧?何况你把服务器文件路径写到客户端不是很安全的。。 Parameters...参数。。
KK3K2005 2014-08-05
  • 打赏
  • 举报
回复
不要特殊字符 换掉
冷月清晖 2014-08-05
  • 打赏
  • 举报
回复
通知后台我需要下载文件(get、post方法都可以),但是不要告诉具体的文件路径或名称,尤其是用get方法的时候。 让后端根据你传的值判断下载哪个文件。
qcxl 2014-08-05
  • 打赏
  • 举报
回复
引用 1 楼 fangzuli 的回复:

不能给服务器一个Parameters 替代你加的那个文件么,面向对象得透彻呀。。
Parameters代替,不是太明白,能说细点吗 我现在主要做前台,主要是html5+js操作这些
万玩完顽完 2014-08-05
  • 打赏
  • 举报
回复

不能给服务器一个Parameters 替代你加的那个文件么,面向对象得透彻呀。。
修复了Google日历弹出窗口的链接无法点击的问题。 Google的“日历”弹出窗口每10个左右的字符在“位置”字段添加零宽度空格字符,以便在不明显改变文本的情况下创建“包装”效果。这样做的问题是,如果您将文本复制/粘贴到Where字段之外,它将仍然包含零宽度空格字符,混入所有文本。尽管“ where”是Google环聊视频链接,这并不是问题(因为它们用特殊的小部件替换了where字段),而where字段包含实际地址(因为Google提供了(用于映射到该位置的“地图”链接),如果您想将信息存储在不适合Google思维方式的where字段,就会成为问题。假设您要在“位置”字段存储“转到会议” URL,“ WebEx” URL,“ BlueJeans.com” URL或“ Room.co” URL。首先,该链接不可点击。其次,如果您复制URL并将其粘贴到Chrome“多功能栏”,则零宽度空格会与URL的其余部分一起粘贴。不仅如此,零宽度空间会转换为零宽度空间的有效转义URL代码。您会在URL以%编码的字符注意到这一点-除了Chrome会在URL自动将%编码的值自动转换为它们的相应utf-8字符以支持通过“多功能框”进行搜索的多语言URL和UTF-8字符。因此,您认为您粘贴了干净的URL,但是零宽度空格仍然保留,并且各种会议服务都报告该URL无效,因此您无法加入会议。此扩展程序解决了这两个问题,方法是先删除错误使用的带有空格字符的零,然后在where字段找到任何http链接并使它们可单击。可以在这里找到源代码:http://github.com/jonathanfalkner/gcal_clickable 支持语言:English (United States)

8,327

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 IIS
社区管理员
  • IIS
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧