首页 网站首页 商业信息 脚本 查看内容

脚本化HTTP 取得响应 指定请求

共生运营网 2023-1-14 14:11 10037人围观 脚本

剧本化HTTP
下面将会用js代码操纵HTTP
下面将会说明在没有致使web阅读重视新加载任何窗口大概窗体的情况下,剧本实现web阅读器和办事器之间的通讯。
ajax:为一种找夙起避免页面重载而静态更新页面的方式,不外现在是间接数据驱动,大概类似于vue的单页利用
comet:这个和ajax恰好相反,为推送消息到web阅读器端

ps;ajax和comet都为一个美国的洗涤日用品牌,╮(╯▽╰)╭

总说

网页信标

img元素有一个src属性,当剧本设备img元素的src属性,且把信息作为图片的url的查询字符串部分,即能把经过编码的信息椽笔给web办事器,web办事器现实上必须返回一个图片作为成果。
究竟上,利用一个空的js剧本也可完成此操纵
一个百度统计的js剧本以下

(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?d2539dae35b4dcf0e7814c110ecefa9f";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();

分析,一个采用es5编写的一个闭包,静态加载一个script标签,向https://hm.baidu.com/hm.js?d2539dae35b4dcf0e7814c110ece发送一个get请求,而且查询的字符串为?前面的参数,办事器只需要统计?前面的get请求数目,即可完成一次次的统计使命。用户的页面逗留,间接计较两次加载的时候差即可。数据库完成统计即可。一个最简单的页面统计完成。

iframe

一个淘汰的标签。
下面是旧的ajax方式
利用iframe完成一次ajax,剧本先把要发送给web办事器的信息编码到url中,办事器在静态的建立一个html文档,将其内容返回给web,在iframe中显现,这类方式受道同源的限制。
上方的方式以及放弃。

script

经过script元素的src属性设备url倡议http get请求,即一种基于script的ajax传输,办事器利用json编码,履行剧本的时辰,将其转码,这类的ajax同时也称为jsonp
即这类的跨域可以不遭到同源的限制

ajax中的x

ajax中的x为xml为一种可选的通讯方式,也可以利用JSON完成通讯。

其他

一些更多的通讯协议,包括rpc(远程进程挪用)答应运转于一台计较机的法式挪用另一台计较机法式的子法式。假如面向工具编程,则远程进程挪用为远程挪用,远程方式挪用。

公布/定阅事务系统

一种设想形式,有两种,一种是观察者形式,一种是公布定阅形式,
即,消息推送利用的是公布/定阅事务系统

观察者形式

意图:界说工具间的一对多的依靠关系,当一个工具状态发生改变时,一切依靠它的工具都获得告诉,并停止更新
处理:一个工具状态给其他工具告诉的题目,
举例利用:有个天气中心的方针A,专门监听天气的变化,而有个显现天气的观察者B,B把自己注册到A里,当A触发天气变化的时辰,调剂B更新方式,并带上自己的高低文。




公布/定阅形式

定阅者把自己想注册的事务注册到调剂中心,当该事务触发时,公布者公布事务到调剂中心,由调剂中心同一调剂定阅者注册到调剂中心的处置代码。
举例:有个界面实时显现天气,它就定阅天气事务(注册到调剂中心),当天气变化时按时获得数据,作为公布者到调剂中心,调剂中心调剂定阅者的天气处置法式。




总结,区分

一个为点对点,一个为中心有一个过渡的,仅此而已。

ps 有一本书js的设想形式,保举看看 http://shop.oreilly.com/product/0636920025832/ReviewSubmit.do?sortby=publicationDate?pageId=0636920025832.IP 以及 https://addyosmani.com/resources/essentialjsdesignpatterns/book/
采办 https://www.amazon.com/_/dp/1449331815?tag=oreilly20-20
很想晓得有木有中文版的。吐槽 28美圆,合计120多元,书怎样那末贵呢。好贵,倡议注册一下

XMLHttpRequest

阅读器在CMLHttpRequest类上界说了其HTTP 的API 这个类的每个实例都暗示一个自力请求/响应对。而且这个工具属性和方式答应指定请求细节和提取响应数据。

同java类似,利用这个api的第一件究竟例化XMLHttpRequest工具

ps:能重用已存在的XMLHttpRequest 可是之前的工具将会被挂起

HTTP请求的4个部分

  1. http请求方式大概行动
  2. 正在请求的URL
  3. 一个可选的请求头调集,其中能够包括身份考证信息
  4. 一个可选的请求主题

HTTP返回的响应

  1. 一个数字和笔墨组分解的状态码,如404(暗示不存在)
  2. 一个响应头调集
  3. 响应主体

为什么当地不能间接利用ajax

在当地写js的时辰,必须搭建一个办事器其AJAX才能工作
缘由:由于文件的协议为file而当地的请求的协议为http,由于同源战略的影响,致使没法利用http协议的文件,故当地没法间接利用ajax

处理方式,chrome的阅读器拜候https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb 安装chrome官方供给的当地测试办事器,用于在当地搭建办事器。
大概,编写Node.js 利用Express框架,加载Static 模块,完本钱地的静态办事器搭建。

指定请求

指定请求利用的是request.open(),此方式将会初始化一个请求从js代码中挪用。
第一个参数指定HTTP方式或行动,字符串不区分巨细写,凡是用大写字母婚配HTTP协议,GET用于常规请求,适用于当URL完全指定请求资本。当请求对办事器没有任何副感化以及当办事器的响应可缓存的时辰,利用GET。对于POST来说,经常用于HTML表单,它在请求主体中包括额外数据,即表单数据,且这些数据经常贮存到办事器的数据库中。此请求不会被缓存。
一样的,还答应其他的一些请求,例如DELETE,HEAD,OPTIONS,PUT等请求。
第二个参数为URL,为请求的主体,相对于文档的URL,这个文档包括挪用open()的剧本,这个不能跨域,请求必须为同域的

设备请求头

request.setRequestHeader('Content-type', 'text/plain');

下面将会设备请求头,上方设备请求头为Content-type的内容为text/plain

有些请求头由于阅读器的平安题目,被制止请求,所以有些不能请求。

假如请求一个遭到密码庇护的url,此时不需要设备Authorization头,只需要间接在open的第三四个参数,传入即可。

发送请求

由于get请求不包括主体,则间接send方式即可完成一个包的发送,

由于跨域限制致使不能读取

在http://1.197.156.53/编写js以下

// 编写请求头GET并完成发送
var request = new XMLHttpRequest(); // 设备请求的类
request.open('GET', 'https://www.baidu.com/'); // 设备请求的链接和方式
request.setRequestHeader('Content-Type', 'text/plain'); // 设备请求头
request.send(null); // 发送包


跨域请求被阻挡。
由于不是同源,同源被阻挡

是同源的

// 编写请求头GET并完成发送
var request = new XMLHttpRequest(); // 设备请求的类
request.open('GET', './index.js'); // 设备请求的链接和方式
request.setRequestHeader('Content-Type', 'text/plain'); // 设备请求头
request.send(null); // 发送包

完成一次发包操纵

顺序题目

HTTP请求的各个部分有指定的顺序,请求方式和URL会首先到达,然后接着请求头,最初请求主体。最初挪用send()方式,完成发送。
顺序题目:必须先挪用open后挪用send()才方可。

一个栗子,经过post方式发送纯文本给办事器

function postMessage(msg) {
var request = new XMLHttpRequest(); // 新请求
request.open('post', '/log.php'); // 用POST向办事器端发送剧本
// 用请求主体发送纯文本消息
request.setRequestHeader('Content-Type', 'text.plain;charset=utf-8'); // 请求主体将是纯文本

request.send(msg);
// 请求完成,我们将疏忽任何响应和任何毛病
}

即上方界说了一个post请求,完成其发送,期待其办事器响应

获得响应

send()发送今后将会期待办事器响应,此时将不会阻塞。
在HTTP发送完成请求今后,下一步将会获得响应。
下面编写函数获得HTTP响应的onreadystatechange

// 发出一个HTTP GET请求获得指定的URL的内容
// 当响应成功到达,考证它能否是纯文本
// 假如是,将会把它传递给指定的回调函数
function getText(url, callback) {
var request = new XMLHttpRequest(); // 建立一个新请求
request.open('GET', url); // 建立一个指定待获得的url
request.onreadystatechange = () => { // 当GRT请求完成今后,触发该事务,发生回调函数
// 假如请求完成,则它是成功的
if (request.readyState === 4 && request.status === 200){ // 假以下载操纵完成,即为4,而且http状态码为200
var type = request.getResponnseHeader('Content-Type'); // 获得HTTP头部信息
if (type.match(/^text/)) //正则婚配,肯定响应为文本
callback(request.responseText); // 回调函数,将返回的DOM树,传递给回调函数
}
};

request.send(null); // 发送
}
留意,该方式为异步的,send方式不会阻塞其他操纵

同步响应

由于其下载的题目,一般异步处置HTTP响应,可是同步也可以,不外由于客户端js为单线程的,当send()方式阻塞今后,将会致使阅读器的ui被解冻,假如毗连的办事器过慢,将会致利用户的操纵出现题目。

方式间接open利用第三个参数为false

响应解码

当办事器响应的为XML文档的时辰,其返回的值为document工具,能利用操纵节点的方式,对其停止操纵
当办事器发送工具大概数组的结构化数据,如JSON,

利用JSON.parse 对结构化数据停止剖析

下方誊写一个函数,停止结构化数据的剖析


// 倡议HTTP GET响应,获得指定的URL内容
// 当响应到达时,把他们剖析后的XML Document工具,剖析后的JSON工具
// 大概字符串形式传递给回调函数
function get(url, callback){
var request = new XMLHttpRequest();
request.open('GET', url); // 指定url
request.onreadystatechange = () => { // 监听器
// 假如请求完成且成功
if (request.readyState === 4 && request.status === 200) {
// 获得响应请求
var type = request.getResponseHeader('Content-Type');
// 检查范例
// 当为xml的时辰
if (type.indexOf('xml') !== -1 && request.responseXML) // 确认能否为xml
calback(request.responseXML); // 回调函数
else if (type === "APPlication/json") // 假如头部的信息为JSON
callback(JSON.parse(request.responseText)); // 将成果JSON格式剖析
else
callback(request.responseText); // 假如是字符串响应
}
};
request.send(null); // 立即发送请求
}

对两种数据剖析,一种为JSON格式,一种为XML格式

ps 不倡议利用eval
ps 由于跨域的题目,只能读取同源的数据,经过script剧本操纵HTTP剧本并实现加载并履行剧本
script 元素能倡议跨域的HTTP请求

能利用request.overrideMimeType可以实现对MIME范例的变动

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

相关推荐

有哪些超神的油猴脚本?

有哪些超神的油猴脚本?

小编在之前就介绍过很多油猴里的神器插件,这里给大家总结几款经典中的经典。01Usersc

一篇教会你写90%的shell脚本

一篇教会你写90%的shell脚本

shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统

脚本怎么写?250+个万能脚本,可直接套用!

脚本怎么写?250+个万能脚本,可直接套用!

作者:厚昌学院特聘讲师,厚昌学院顾问团队核心成员,从事互联网行业从事互联网行业8

浏览器辅助神器:油猴脚本使用教程

浏览器辅助神器:油猴脚本使用教程

前言「油猴脚本」是一段脚本代码,通过它可以让浏览器实现各种各样的扩展功能,和浏览

这100个shell脚本案例,你都知道吗?一篇教会你写90%的 ...

这100个shell脚本案例,你都知道吗?一篇教会你写90%的 ...

shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成

最新一波油猴脚本推荐:有了它们,你的浏览器就无敌了

最新一波油猴脚本推荐:有了它们,你的浏览器就无敌了

关注扩展迷、喜欢折腾电脑的小伙伴们,应该都对各种各样的浏览器插件不陌生了。浏览器

最强浏览器插件:油猴脚本的安装及使用教程

最强浏览器插件:油猴脚本的安装及使用教程

Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome,

油猴脚本管理器的超详细下载安装使用教程——新手必看

油猴脚本管理器的超详细下载安装使用教程——新手必看

油猴脚本管理器的超详细下载安装使用教程——新手必看油猴可以帮你干什么:全网VIP视

iPad随航脚本(Mac13.0Ventura)

iPad随航脚本(Mac13.0Ventura)

参考文章和视频:将iPad作为Mac Mini主屏幕的实现方法视频:无屏自动启动随航 iPad作为M

模板很齐全,视频脚本怎么写?50个短视频脚本文案模板 ...

模板很齐全,视频脚本怎么写?50个短视频脚本文案模板 ...

在运营短视频时,你有没有遇到过这样的问题:1、拍了一半发现拍摄场景不行;2、拍摄过

一个油猴脚本,让你体验真正的百度网盘下载不限速!

一个油猴脚本,让你体验真正的百度网盘下载不限速!

我们先看一下这个脚本的下载效果。我是100M的宽带,这直接能飙到20MB/s,所以下载速度

视频拍摄脚本怎么写?完整视频拍摄脚本范文实例分享

视频拍摄脚本怎么写?完整视频拍摄脚本范文实例分享

写脚本?对于没有视频背景的朋友来说可能就会有疑问,脚本是什么?不应该是电影,电视

「小白教程」让浏览器为所欲为!油猴脚本简介与使用心得

「小白教程」让浏览器为所欲为!油猴脚本简介与使用心得

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:Stark-C大家好,我是Stark-

Tampermonkey油猴插件——安装与使用教程

Tampermonkey油猴插件——安装与使用教程

​初次见面,大家好。相信熟悉浏览器的都知道,尤其是大名鼎鼎的Chrome浏览器,丰富的

这是我见过最牛的shell脚本100例,学习提升面试必备,建议收藏

这是我见过最牛的shell脚本100例,学习提升面试必备,建议收藏

从历史上看,shell一直是类Unix系统的原生命令行解释器。多年来,它已被证明是Unix的

网售几元钱的网红脚本,真是顶流主播的走红秘籍?

网售几元钱的网红脚本,真是顶流主播的走红秘籍?

有人说,网红行业的现状是江山代有才人出,各领风骚“好几天”。的确,即便是行业顶流

115最新转存脚本(可转存和提取SHA1版本)

115最新转存脚本(可转存和提取SHA1版本)

最近115调整了接口,导致115转存助手ui优化版3.8.1版本无法转存或获取SHA1。有大神在

视频脚本创作不完全指南

视频脚本创作不完全指南

根据第49次《中国互联网络发展状况统计报告》数据,截至2022年12月,我国网络视频(含

一文详解Shell脚本编程,从基础到进阶,通俗易懂一目了然

一文详解Shell脚本编程,从基础到进阶,通俗易懂一目了然

Shell脚本编程难,难于上青天!这话不假,尤其很多程序员新人,学了几个月Shell脚本写

好的短视频从脚本制作开始,学会这3招,还怕做不出好脚本?

好的短视频从脚本制作开始,学会这3招,还怕做不出好脚本?

在上期我们做了个形象的比喻,把短视频制作比喻成我们造房子,前面我们已经带领大家打

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信