js解析xml字符串
示例为DOMParser.parseFromString()的简单使用。
以下用到ES6的多行字符串,注意包含str值的两个点是Tab键上面、数字键1左边的按键,而不是单引号。
js解析本地xml文件
要解析的xml文件部分数据如下:
解析内容放到二维数组中,代码如下:
- open方法三个参数分别为http请求方式、请求地址、同步(false,阻塞,不使用异步)还是异步(true);
- send方法用于post传递参数,本例未用到,默认为null。如xmlhttp.send(“data=data&data2=data2”);
- responseXML属性返回XML文档对象;
- xmlDoc.getElementsByTagName得到的是Dom对象,不可使用forEach,使用Array.from(x)创建数组实例;
- Array.from()的参数为类似数组或者可迭代的对象,只要有length属性的方法均可作为参数;
js解析ajax请求返回的文档对象
使用jquery的ajax方法,将返回对象解析到json中,如下:
控制台查看返回如下,跨域,不可访问。
而用java,httpClient请求(用的Apache HttpClient 4.5.2),可以拿到该资源。浏览器输入网址可以访问,用postMan也可访问,唯有ajax不可访问。于是查了下,才想起来浏览器的同源策略导致Ajax只能同源使用。
浏览器的同源安全策略
同源安全策略是浏览器最核心也是最基本的安全机制。
同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键安全机制,为了保证用户信息的安全,防止恶意的网站窃取数据。
比如A网站设置的 Cookie,由于同源策略,B网站就不能打开或修改。设想如下情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的 Cookie,信息就会泄漏,其他网站就可以冒充用户,为所欲为。
同源的定义:
- 协议相同
- 域名相同
- 端口相同
跨域需要双端协作,本文用的接口没有服务端控制权,只有前端单方面无法解决跨域问题,ajax不可请求该资源。