IE浏览器兼容之URL编码

news/2024/11/17 7:32:29/

问题场景:文件上传,在谷歌里可以正常操作,IE浏览器操作出错,服务请求报错。HTTP 400 错误 - 请求无效 (Bad request)

 

问题分析:对比两个请求可以发现,二者的请求URL不一致。jsp通过url请求传递参数给后端,但是url的格式不对会造成请求失败。这种url的问题常发生在在IE浏览器中,其他浏览器火狐、chrome等不会有问题。因为谷歌中会自动给空格和一些特殊字符编码,而IE没有这一步。

解决办法:手动给url编码。在文件upload的方法里对url进行两次编码

encodeURI(encodeURI(url))

以上问题涉及的知识:

1、http请求过程:

  • 浏览器把URL(以及post提交的内容)经过编码后发送给服务器。
  •  服务器将对内容解码,进行处理,再把结果编码返回给浏览器。
  •  浏览器按照指定的编码显示该网页。

字符串编码和解码时涉及到的字符集,如ISO8859-1、GBK、UTF-8、UNICODE。

2、URL编码

(1)URL编码特点:

  • 由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。
  • URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符。
  • URL 不能包含空格。URL 编码通常使用 + 来替换空格。

(2)URL编码方法

  • escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。escape()不对"+"编码 主要用于汉字编码,现在已经不提倡使用。
  • encodeURI()是Javascript中真正用来对URL编码的函数。编码整个url地址,但对特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。对应的解码函数是:decodeURI()。
  • encodeURIComponent() 能编码"; / ? : @ & = + $ , #"这些特殊字符。对应的解码函数是decodeURIComponent()。假如要传递带&符号的网址,所以用encodeURIComponent()

代码示例:

代码:var test1="http://www.haorooms.com/My name=hl&age=18/";
var enurl=encodeURI(test1);
console.log(enurl);
var enuc=encodeURIComponent(test1);
console.log(enuc);//输出
http://www.haorooms.com/My%20name=hl&age=18/
http%3A%2F%2Fwww.haorooms.com%2FMy%20name%3Dhl%26age%3D18%2F

 


http://www.ppmy.cn/news/687174.html

相关文章

教你如何拷贝IE浏览器的网址收藏夹

教你如何拷贝IE浏览器的网址收藏夹 很多人在网上冲浪的时候,浏览到好的网址都喜欢收藏,一般收藏到IE浏览器的收藏夹中,日积月累,浏览器的收藏夹里就有很多很有用处的网站,当有些时候遇到重装电脑或者有些人喜欢用不同浏…

Edge浏览器中使用IE浏览器网站

背景:IE浏览器不能使用 前段时间IE被放弃后,现在的新系统如Win11都已经没有预装IE浏览器,微软官方也不提供IE浏览器的下载,这导致一些旧网站仅支持IE浏览器我们无法使用,尤其是政府、教育等网站强制依赖使用IE&#x…

VBScript中调用IE浏览器

VBScript中调用IE浏览器 一、 Internet Explorer.Application二、 WScript.Shell 一、 Internet Explorer.Application a.vbs文件内容如下: StartURL "https://www.baidu.com/" set IE CreateObject("InternetExplorer.Application") IE.Vi…

使谷歌浏览器兼容ie浏览器

由于某些网站只支持ie浏览器,如果我们想免去安装ie浏览器的麻烦,不妨在谷歌浏览器安装个ie浏览器插件 准备工作 安装能上外网的工具 下载插件 安装后在右上角的扩展下有ie tab 点击上面的ie tab后发现会自动下载一个ietabhelper的应用 双击应用就可…

IE浏览器请求打开谷歌浏览器

有些老项目运行在IE上,但是新项目很多没有兼容到IE11,如何不想维护IE了,能不能跳转到新的浏览器呢? 最近做老项目的跳转,发现报错,原来是新增的插件不支持IE11,所以在想,能不能让他从…

计算机应用基础IE浏览器设置,计算机应用基础IE浏览器设置学习笔记

IE浏览器的基本设置 计算机应用基础IE浏览器设置学习笔记 一、IE浏览器设置简介 Internet Explorer浏览器(简称IE浏览器)是能够接收用户的请求信息,并到相应网站获取网页内容的专用软件。IE浏览器的使用和各种设置是考查的重点,同学们需要认真实践&#…

Linux--查看Linux的体系结构以及内核版本:uname

语法: uname 选项功能: uname用来获取电脑和操作系统的相关信息。 选项: -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型&a…

source insight小键盘在vim中不能使用数字(数字按键变英文)

文章目录 问题描述解决办法注意: 问题描述 在使用source insight登录远程服务器并使用vim编辑模式时,出现数字键盘的0-9变成了yxwvutsrqp情况。 解决办法 注意: 如果你点了save as…的话,会让你保存untitled.key文件到你指定的路…