diff --git a/README.md b/README.md index 7135156..46ca848 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,12 @@ ```json { - "port": 23333, // [可选] 默认使用 23333 端口, 如果被使用了, 会向上查找可用端口 - "root": ".", // [可选] web服务的根目录, 默认为当前项目的根目录, 可填写相对项目根目录的路径。 - "enabled": true // 这里配置为 true 才会启动web服务 + "enabled": true, // 这里配置为 true 才会启动web服务 + "port": 23333, // 【可选】 默认使用 23333 端口, 如果被使用了, 会向上查找可用端口 + "root": ".", // 【可选】 web服务的根目录, 默认为当前项目的根目录, 可填写相对项目根目录的路径。 + "headers": { // 【可选】支持注入一些头信息, 方便特殊需要的调试 + "cache-control": "no-store" // 默认为 no-store + ... + } } ``` diff --git a/index.js b/index.js index bdb8314..6ddb447 100644 --- a/index.js +++ b/index.js @@ -39,6 +39,13 @@ const MIME_TYPES = { other: 'application/octet-stream' } +const COMMON_HEADERS = { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': '*', + 'Cache-Control': 'no-store', + 'X-Powered-By': 'VS Code simple.http' +} + MIME_TYPES.htm = MIME_TYPES.html MIME_TYPES.jpeg = MIME_TYPES.jpg MIME_TYPES.tif = MIME_TYPES.tiff @@ -71,20 +78,19 @@ function createServer() { let stat = fs.stat(file) let ext = pathname.split('.').pop() - res.setHeader('Access-Control-Allow-Origin', '*') - res.setHeader('Access-Control-Allow-Headers', '*') - res.setHeader('Cache-Control', 'no-store') - res.setHeader('X-Powered-By', 'VS Code simple.http') + for (let k in COMMON_HEADERS) { + res.setHeader(k, COMMON_HEADERS[k]) + } if (stat.isFile()) { - res.setHeader('Accept-Ranges', 'bytes') - res.setHeader('Content-Type', MIME_TYPES[ext] || MIME_TYPES.other) - res.setHeader('Content-Length', stat.size) + res.setHeader('accept-ranges', 'bytes') + res.setHeader('content-type', MIME_TYPES[ext] || MIME_TYPES.other) + res.setHeader('content-length', stat.size) res.writeHead(200, 'OK') fs.origin.createReadStream(file).pipe(res) } else { - res.setHeader('Content-Type', MIME_TYPES.html) - res.setHeader('Content-Length', 0) + res.setHeader('content-type', MIME_TYPES.html) + res.setHeader('content-length', 0) res.writeHead(404, 'Not Found') res.end('') } @@ -117,6 +123,16 @@ function __init__() { root = join(root, conf.root) } + if (conf.headers) { + for (let k in conf.headers) { + let _k = k.toLowerCase() + if (['accept-ranges', 'content-type', 'content-length'].contains(_k)) { + continue + } + COMMON_HEADERS[_k] = conf.headers[k] + } + } + if (conf.enabled) { enabled = true port = conf.port || 23333 diff --git a/package.json b/package.json index f937dda..593e73f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "simple-http", "displayName": "simple http", "description": "🔥 简单的http服务器, 方便临时调试html", - "version": "1.1.0", + "version": "1.2.0", "publisher": "yutent", "author": "Yutent [@yutent]", "icon": "logo.png",