wget -qO- bench.sh | bash 一键测试linux性能
cat /proc/cpuinfo 查看cpu
ifconfig 查看网卡信息
free -m 查看内存
df -lh 查看硬盘信息
wget http://cachefly.cachefly.net/100mb.test && rm -f 100mb.test 端口速度测试
smartctl -A /dev/sda 查看硬盘使用时间 (提前安装smartmontools)
finger 查看用户信息
chkconfig –list 查看服务
ps aux 查看系统任务
top 实时查看资源占用
rpm -qa 查看所有安装的软件包
vnstat 查看流量 -l 实时 -d 每天 -m 每月
netstat -lunt 查看端口信息
iptables -L 查看防火墙
getconf LONG_BIT 查看是32位还是64位
whereis [name] 查找软件的路径
Renko's blog
人生如逆旅,我亦是行人
-
-
同源和跨域(五)HTML5、iframe和其他方式跨域
整理来源,侵删致歉
浅谈WEB跨域的实现(前端向)
前端解决跨域的九种方法###1. Cross-document messaging
在 Cross-document messaging 中,我们可以使用 postMessage 方法和 onmessage 事件来实现不同域之间的通信,其中postMessage用于实时向接收信息的页面发送消息,其语法为:
1
2
3
4
5otherWindow.postMessage(message, targetOrigin);
otherWindow: 对接收信息页面的window的引用。可以是页面中iframe的contentWindow属性;window.open的返回值;通过name或下标从window.frames取到的值。
message: 所要发送的数据,string类型。
targetOrigin: 允许通信的域的url,“*”表示不作限制。我们可以在父页面中嵌入不同域的子页面(iframe实现,而且常规会把它隐藏掉),在子页面调用 postMessage 方法向父页面发送数据:
父页面(http://localhost:10847/sop/a.html):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head lang="en">
<meta charset="UTF-8">
<title>postMessage</title>
</head>
<body>
<iframe style="display:none;" id="ifr" src="http://127.0.0.1:10847/sop/b.html"></iframe>
<script type="text/javascript">
window.addEventListener('message', function(event){
// 通过origin属性判断消息来源地址
if (event.origin == 'http://127.0.0.1:10847') {
alert(event.data); // 弹出从子页面post过来的信息
}
}, false);
</script>
</body>
</html>子页面(http://127.0.0.1:10847/sop/b.html):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head lang="en">
<meta charset="UTF-8">
<title>子页面</title>
</head>
<body>
<script type="text/javascript">
var ifr = window.parent; //获取父窗体
var targetOrigin = 'http://localhost:10847'; // 若写成 http://127.0.0.1:10847 则将无法执行postMessage
ifr.postMessage('这是传递给a.html的信息', targetOrigin);
</script>
</body>
</html>2. WebSocket
具体实现 https://www.cnblogs.com/vajoy/p/4295825.html
WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,同时允许跨域通讯,是server push技术的一种很棒的实现。
socket.io很好地封装了webSocket接口,提供了更简单、灵活的接口,也对不支持webSocket的浏览器提供了向下兼容(例如替换为Flash Socket/Comet)。3. document.domain + iframe跨域
more... -
同源和跨域(四)跨域资源共享 CORS
跨來源資源共用(Cross-Origin Resource Sharing (CORS))是一種使用額外 HTTP 標頭令目前瀏覽網站的使用者代理取得存取其他來源(網域)伺服器特定資源權限的機制。當使用者代理請求一個不是目前文件來源——例如來自於不同網域(domain)、通訊協定(protocol)或通訊埠(port)的資源時,會建立一個跨來源 HTTP 請求(cross-origin HTTP request)。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
1. Access-Control-Allow-Origin
Access-Control-Allow-Origin 响应头指定了该响应的资源是否被允许与给定的origin共享。
如需允许所有资源都可以访问您的资源,设置:
Access-Control-Allow-Origin: *
如需允许https://developer.mozilla.org访问您的资源,设置:
Access-Control-Allow-Origin: https://developer.mozilla.org
2. 简单请求(simple request)和非简单请求(not-so-simple request)
1、简单的COR请求,它可以直接向外域资源发起请求。它必须仅仅包含简单的方法和头。
2、如果COR包含复杂的方法和头,它需要发出预检验(Preflight)请求,它先向资源服务器发出一个OPTIONS方法、包含“Origin”头的请求。该回复可以控制COR请求的方法,HTTP头以及验证等信息。只有该请求获得允许以后,才会发起真实的外域请求。
只要同时满足以下两大条件,就属于简单请求。
1
2
3
4
5
6
7
8
9
10
11(1) 请求方法是以下三种方法之一:
HEAD
GET
POST
(2)HTTP的头信息不超出以下几种字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain3. 详细使用
more... -
同源和跨域(三)Fetch API
1. 概览
fetch(url/request[, options]) var request = new Request(url/request[, options]);
fetch 是全局量 window 的一个方法
request 是一个 Request 对象,Request 参数和 fetch 参数相同
options 是一个对象,主要key 如下:1
2
3
4
5
6
7
8
9
10
11method: GET/POST等
headers: 一个普通对象,或者一个 Headers 对象
body: 传递给服务器的数据,可以是字符串/Buffer/Blob/FormData,如果方法是 GET/HEAD,则不能有此参数
mode: cors / no-cors / same-origin, 是否跨域,默认是 no-cors
credentials: omit / same-origin / include
cache: default / no-store / reload / no-cache / force-cache / only-if-cached
redirect: follow / error / manual
referrer: no-referrer / client / 或者一个url
referrerPolicy: no-referrer / no-referrer-when-downgrade / origin / origin-when-cross-origin / unsafe-url
integrity: 资源完整性验证
fetch() 返回一个 promise,所以这么用fetch API 使用 Promises 来处理结果/回调
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 对响应的简单处理
fetch('/some/url').then(function(response) {
}).catch(function(err) {
// 出错了;等价于 then 的第二个参数,但这样更直观 :(
});
// 链式处理,将异步变为类似单线程的写法: 高级用法.
fetch('/some/url').then(function(response) {
return //... 执行成功, 第1步...
}).then(function(returnedValue) {
// ... 执行成功, 第2步...
}).catch(function(err) {
// 中途任何地方出错...在此处理 :(
});2. Headers
more... -
同源和跨域(二)概念&JSONP
同源
同源策略是浏览器的一种安全策略,所谓同源是指,域名,协议,端口完全相同。
跨域
1. 跨域类型
URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70.32.92.74/b.js 域名和域名对应ip 不允许 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允许 http://www.a.com/a.js http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问) http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 不允许 2. 跨域方案
顶级域名相同的可以通过domain.name来解决,即同时设置 domain.name = 顶级域名(如example.com)
document.domain + iframe
window.name + iframe
location.hash + iframe
window.postMessage()
3. JSONP
more... -
同源和跨域(一)Ajax
1. 原生Ajax写法
- 建立XMLHTTPRequest对象
- 注册回调函数
当服务器回应我们了,我们想要执行什么逻辑 - 使用open方法设置和服务器端交互的基本信息
设置提交的网址,数据,post提交的一些额外内容 - 设置发送的数据,开始和服务器端交互
发送数据 - 更新界面
在注册的回调函数中,获取返回的数据,更新界面
示例代码:GET get的数据,直接在请求的url中添加即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<script type="text/javascript">
// 创建XMLHttpRequest 对象
var xml = new XMLHttpRequest();
// 设置跟服务端交互的信息
xml.open('get','01.ajax.php?name=fox');
xml.send(null); // get请求这里写null即可
// 接收服务器反馈
xhr.onreadystatechange = function () {
// 这步为判断服务器是否正确响应
if (xhr.readyState == 4 && xhr.status == 200) {
// 打印响应内容
alert(xml.responseText);
}
};
</script>示例代码:POST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<script type="text/javascript">
// 异步对象
var xhr = new XMLHttpRequest();
// 设置属性
xhr.open('post', '02.post.php' );
// 如果想要使用post提交数据,必须添加
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// 将数据通过send方法传递
xhr.send('name=fox&age=18');
// 发送并接受返回值
xhr.onreadystatechange = function () {
// 这步为判断服务器是否正确响应
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
};
</script>2. Ajax工具函数封装
more...