web通信类几个相关知识
1、什么是同源策略及限制?
同源策略限制从一个源加载的文档或者脚本如何与来自另一个源的资源进行交互。
这是一个用于隔离潜在恶意文件的关键安全机制。
所谓同源,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可。
所谓限制,即不是一个源的文档或者脚本不允许操作另一个:
1)、Cookie、LocalStorage和 IndexDB无法读取
2)、DOM 无法获得
3)、AJAX 请求不能发送
2、前后端如何通信?
Ajax WebSocket CORS
3、如何创建 Ajax?
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。
这其中最关键的一步就是从服务器获得请求数据
ajax过程:
1)、创建 XMLHttpRequest 对象,也就是创建一个异步调用对象
2)、创建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信息
3)、设置响应 HTTP 请求状态变化的函数
4)、发送 HTTP 请求
5)、获取异步调用返回的数据
6)、使用 JavaScript和 DOM 实现局部刷新
function load() {
/*1、创建XMLHttpRequest*/
var xhr;
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xhr = new XMLHttpRequest();
} else {
// IE6, IE5 浏览器执行代码
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
/* 2、向服务器发送请求(open()和send())
* open(method,url,async):
* 1)、method:请求的类型;GET 或 POST
* 2)、url:文件在服务器上的位置
* 3)、async:true(异步)或 false(同步)
*send(string):
* string:仅用于 POST 请求
*/
xhr.open('get', 'getUser.php?user=xxx&pass=xxxx', true);
xhr.send();
/*3、处理服务器响应
*onreadystatechange 事件
*readyState 状态(0,1,2,3,4)
*status (200,404,...)
*/
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// responseText获取字符串形式的响应数据 responseXML获取XML形式的响应数据
console.log(xhr.responseText);
}
}
4、跨域通信的几种方式?
(1)、jsonp(需要服务端支持)
<button id="btn">点击</button>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script>
$('#btn').click(function(){
//向头部输入一个脚本,该脚本发起一个跨域请求
$("head").append("<script src='http://localhost:9090/student?
callback=showData'><\/script>");
}); function func(res){
alert(res.message+res.name+'你已经'+res.age+'岁了');
}
</script>
(2)、hash
//场景是当前页面 A 通过iframe 或 frame 嵌入了跨域的页面 B
//在 A 中的伪代码如下:
var B = document.getElementsByTagName('ifame');
B.src = B.src + '#' + 'data'; //在B中的伪代码如下:
window.onhashchange = function(){
var data = window.location.hash;
}
(3)、postMessage
//窗口A(http: A.com)向跨域的窗口B(http://B.com)发送信息
window.postMessage('data', 'http://B.com'); //在窗口B中监听
window.addEventListener('message',function(event){
console.log(event.origin); //http://A.com
console.log(event.source); //B window
console.log(evnet.data); //data
});
(4)、webSocket(需要服务端支持)
var ws = new WebSocket('wss://localhost:3000');
ws.onopen = function(evt){
console.log('Connection open ...');
ws.send('hello');
}
ws.onmessage = function(evt){
console.log('Received Message:'+ evt.data);
ws.close();
}
ws.onclose = function(evt){
console.log('Connection closed.');
}
(5)、CORS
CORS即“跨域资源共享”,这是一种最常用的跨域实现方式,一般需要后端人员在处理请求数据的时候,添加允许跨域的相关请求头信息。
大致思路是这样的:首先获取请求对象的信息,比如Origin字段,通过预先配置的参数判断请求是否合法,
然后设置相应对象response的头信息,实现跨域资源请求。
web通信类几个相关知识的更多相关文章
- web跨域及cookie相关知识总结
原文:web跨域及cookie相关知识总结 之前对于跨域相关的知识一致都很零碎,正好现在的代码中用到了跨域相关的,现在来对这些知识做一个汇总整理,方便自己查看,说不定也可能对你有所帮助. 本篇主要 ...
- DesignPattern系列__08UML相关知识
前言 现在,很少有人和90年代一样,自己去实现一个软件的各个方面,也就是说,在工作中,和人沟通是必备的技能.那么,作为一枚码农,如何和他人沟通呢?这就要依靠本文的主题了--UML. 简介 UML--U ...
- web聊天相关知识
http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此 ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- WEB相关知识和Tomcat服务器
WEB相关知识 1.Internet上供外界访问的Web资源分为: 静态web资源:指web页面中供人们浏览的数据始终是不变的. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素
[源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中 ...
- 背水一战 Windows 10 (75) - 控件(控件基类): FrameworkElement - 基础知识, 相关事件, HorizontalAlignment, VerticalAlignment
[源码下载] 背水一战 Windows 10 (75) - 控件(控件基类): FrameworkElement - 基础知识, 相关事件, HorizontalAlignment, Vertical ...
- 04StringBuffer相关知识、Arrays类、类型互换、正则、Date相关
04StringBuffer相关知识.Arrays类.类型互换.正则.Date相关-2018.7.12 1.StringBuffer A:StringBuffer的构造方法: public Strin ...
随机推荐
- Java网络编程系列之TCP连接状态
1.TCP连接状态 LISTEN:Server端打开一个socket进行监听,状态置为LISTEN SYN_SENT:Client端发送SYN请求给Server端,状态由CLOSED变为SYN_SEN ...
- file_get_contents函数获取不到数据的一种情况
问题: file_get_contents($url) 获取不到数据,尽管URL地址正确,函数使用正确.如下代码 $url = "https://www.baidu.com"; ...
- 【阿里云IoT+YF3300】11.物联网多设备快速通信级联
我们见到的很多物联网设备,大都是“一跳”上网,所谓的“一跳”就是设备直接上网,内嵌物联网模块或者通过DTU直接上网.其实稍微复杂的物联网现场,往往网关下面连接若干物联网设备(如下图),并且这些物联网设 ...
- Linux普通用户如何获取root权限 sudo -i
从下图中可以知道,xiaolai这个用户连接到服务器后它没有权限,更新代码都更新不了 那么我们作为一个普通用户要获取管理员权限,怎么办呢? 输入 sudo -i 然后再输入普通用户的这个密码 获取成功 ...
- 使用Java实现简单的Http服务器
在Java中可以使用HttpServer类来实现Http服务器,该类位于com.sun.net包下(rt.jar).实现代码如下: 主程序类 package bg.httpserver; import ...
- 小程序和wepy做循环渲染如何点击拿到相对应的值
数据和其他的就忽略,简单上手,wepy的for渲染方式改成对应的就行,传参触发不用改 <view wx:for="{{list}}"> {{item.title}} & ...
- TensorFlow——批量归一化操作
批量归一化 在对神经网络的优化方法中,有一种使用十分广泛的方法——批量归一化,使得神经网络的识别准确度得到了极大的提升. 在网络的前向计算过程中,当输出的数据不再同一分布时,可能会使得loss的值非常 ...
- SycSec成都信息工程大学2019CTF-前五道WEB题writeup
一.WEB (1)一起来撸猫 flag藏在标签的注释内 <!--这是注释--> (2)你看见过我的菜刀么 eval漏洞 利用蚁剑连接 连接密码就是要post传的参数 连接成功后在网站根目 ...
- 机器学习-MNIST数据集使用二分类
一.二分类训练MNIST数据集练习 %matplotlib inlineimport matplotlibimport numpy as npimport matplotlib.pyplot as p ...
- c#实现ofd文件转图片功能 (附执行程序)
前言 ofd文件的作用就是保证信息能如实的存储.传递.显示.保证ofd文件的真实性靠的是签名:ofd 的显示需要专用软件.ofd标准是新的国家标准,应用范围远不如pdf:现有浏览器不能解析ofd.支持 ...