# 触发条件
- 必须,跨域
- 必须,符合预检请求
# 优化方案
- 前提,浏览器需关闭disabled cache,https://my.oschina.net/mobinchao/blog/908834
# demo
const http = require('http');
http.createServer(function (req, res) {
res.end(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button id="btn">发送请求</button>
<script>
btn.onclick = function () {
const xhr = new XMLHttpRequest();
xhr.open('get', '//localhost:8001');
xhr.setRequestHeader('X-SUPER-TOKEN', Math.random().toString(32));
xhr.onreadystatechange = function () {
if (xhr.readyState !== 4 || xhr.status !== 200) return;
console.log(xhr);
}
xhr.send()
}
</script>
</body>
</html>
`)
}).listen(8000);
http.createServer(function (req, res) {
if (req.method === 'OPTIONS') {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', '*');
res.setHeader('Access-Control-Allow-Headers', 'X-SUPER-TOKEN');
res.setHeader('Access-Control-Max-Age', 86400);
res.end();
return
}
res.end('123')
}).listen(8001);