我的服务器文件如下:
var port = 8000;
var serverUrl = "127.0.0.1";
var http = require("http");
var path = require("path");
var fs = require("fs");
console.log("Starting web server at " + serverUrl + ":" + port);
http.createServer( function(req, res) {
var now = new Date();
var filename = req.url || "index.html";
var ext = path.extname(filename);
var localPath = __dirname;
var validExtensions = {
"3gp" : "video/3gpp"
, "a" : "application/octet-stream"
, "ai" : "application/postscript"
, "aif" : "audio/x-aiff"
, "aiff" : "audio/x-aiff"
, "asc" : "application/pgp-signature"
, "asf" : "video/x-ms-asf"
, "asm" : "text/x-asm"
, "asx" : "video/x-ms-asf"
, "atom" : "application/atom+xml"
, "au" : "audio/basic"
, "avi" : "video/x-msvideo"
, "bat" : "application/x-msdownload"
, "bin" : "application/octet-stream"
, "bmp" : "image/bmp"
, "bz2" : "application/x-bzip2"
, "c" : "text/x-c"
, "cab" : "application/vnd.ms-cab-compressed"
, "cc" : "text/x-c"
, "chm" : "application/vnd.ms-htmlhelp"
, "class" : "application/octet-stream"
, "com" : "application/x-msdownload"
, "conf" : "text/plain"
, "cpp" : "text/x-c"
, "crt" : "application/x-x509-ca-cert"
, "css" : "text/css"
, "csv" : "text/csv"
, "cxx" : "text/x-c"
, "deb" : "application/x-debian-package"
, "der" : "application/x-x509-ca-cert"
, "diff" : "text/x-diff"
, "djv" : "image/vnd.djvu"
, "djvu" : "image/vnd.djvu"
, "dll" : "application/x-msdownload"
, "dmg" : "application/octet-stream"
, "doc" : "application/msword"
, "dot" : "application/msword"
, "dtd" : "application/xml-dtd"
, "dvi" : "application/x-dvi"
, "ear" : "application/java-archive"
, "eml" : "message/rfc822"
, "eps" : "application/postscript"
, "exe" : "application/x-msdownload"
, "f" : "text/x-fortran"
, "f77" : "text/x-fortran"
, "f90" : "text/x-fortran"
, "flv" : "video/x-flv"
, "for" : "text/x-fortran"
, "gem" : "application/octet-stream"
, "gemspec" : "text/x-script.ruby"
, "gif" : "image/gif"
, "gz" : "application/x-gzip"
, "h" : "text/x-c"
, "hh" : "text/x-c"
, "htm" : "text/html"
, "html" : "text/html"
, "ico" : "image/vnd.microsoft.icon"
, "ics" : "text/calendar"
, "ifb" : "text/calendar"
, "iso" : "application/octet-stream"
, "jar" : "application/java-archive"
, "java" : "text/x-java-source"
, "jnlp" : "application/x-java-jnlp-file"
, "jpeg" : "image/jpeg"
, "jpg" : "image/jpeg"
, "js" : "application/javascript"
, "json" : "application/json"
, "log" : "text/plain"
, "m3u" : "audio/x-mpegurl"
, "m4v" : "video/mp4"
, "man" : "text/troff"
, "mathml" : "application/mathml+xml"
, "mbox" : "application/mbox"
, "mdoc" : "text/troff"
, "me" : "text/troff"
, "mid" : "audio/midi"
, "midi" : "audio/midi"
, "mime" : "message/rfc822"
, "mml" : "application/mathml+xml"
, "mng" : "video/x-mng"
, "mov" : "video/quicktime"
, "mp3" : "audio/mpeg"
, "mp4" : "video/mp4"
, "mp4v" : "video/mp4"
, "mpeg" : "video/mpeg"
, "mpg" : "video/mpeg"
, "ms" : "text/troff"
, "msi" : "application/x-msdownload"
, "odp" : "application/vnd.oasis.opendocument.presentation"
, "ods" : "application/vnd.oasis.opendocument.spreadsheet"
, "odt" : "application/vnd.oasis.opendocument.text"
, "ogg" : "application/ogg"
, "p" : "text/x-pascal"
, "pas" : "text/x-pascal"
, "pbm" : "image/x-portable-bitmap"
, "pdf" : "application/pdf"
, "pem" : "application/x-x509-ca-cert"
, "pgm" : "image/x-portable-graymap"
, "pgp" : "application/pgp-encrypted"
, "pkg" : "application/octet-stream"
, "pl" : "text/x-script.perl"
, "pm" : "text/x-script.perl-module"
, "png" : "image/png"
, "pnm" : "image/x-portable-anymap"
, "ppm" : "image/x-portable-pixmap"
, "pps" : "application/vnd.ms-powerpoint"
, "ppt" : "application/vnd.ms-powerpoint"
, "ps" : "application/postscript"
, "psd" : "image/vnd.adobe.photoshop"
, "py" : "text/x-script.python"
, "qt" : "video/quicktime"
, "ra" : "audio/x-pn-realaudio"
, "rake" : "text/x-script.ruby"
, "ram" : "audio/x-pn-realaudio"
, "rar" : "application/x-rar-compressed"
, "rb" : "text/x-script.ruby"
, "rdf" : "application/rdf+xml"
, "roff" : "text/troff"
, "rpm" : "application/x-redhat-package-manager"
, "rss" : "application/rss+xml"
, "rtf" : "application/rtf"
, "ru" : "text/x-script.ruby"
, "s" : "text/x-asm"
, "sgm" : "text/sgml"
, "sgml" : "text/sgml"
, "sh" : "application/x-sh"
, "sig" : "application/pgp-signature"
, "snd" : "audio/basic"
, "so" : "application/octet-stream"
, "svg" : "image/svg+xml"
, "svgz" : "image/svg+xml"
, "swf" : "application/x-shockwave-flash"
, "t" : "text/troff"
, "tar" : "application/x-tar"
, "tbz" : "application/x-bzip-compressed-tar"
, "tcl" : "application/x-tcl"
, "tex" : "application/x-tex"
, "texi" : "application/x-texinfo"
, "texinfo" : "application/x-texinfo"
, "text" : "text/plain"
, "tif" : "image/tiff"
, "tiff" : "image/tiff"
, "torrent" : "application/x-bittorrent"
, "tr" : "text/troff"
, "txt" : "text/plain"
, "vcf" : "text/x-vcard"
, "vcs" : "text/x-vcalendar"
, "vrml" : "model/vrml"
, "war" : "application/java-archive"
, "wav" : "audio/x-wav"
, "wma" : "audio/x-ms-wma"
, "wmv" : "video/x-ms-wmv"
, "wmx" : "video/x-ms-wmx"
, "wrl" : "model/vrml"
, "wsdl" : "application/wsdl+xml"
, "xbm" : "image/x-xbitmap"
, "xhtml" : "application/xhtml+xml"
, "xls" : "application/vnd.ms-excel"
, "xml" : "application/xml"
, "xpm" : "image/x-xpixmap"
, "xsl" : "application/xml"
, "xslt" : "application/xslt+xml"
, "yaml" : "text/yaml"
, "yml" : "text/yaml"
, "zip" : "application/zip",
".html" : "text/html",
".js": "application/javascript",
".css": "text/css",
".txt": "text/plain",
'.svg' : 'image/svg+xml',
'.woff' : 'application/font-woff',
'.woff2' : 'application/font-woff2',
'.md' : 'text/x-markdown',
'.otf' : 'font/opentype',
".jpg": "image/jpeg",
'json':'application/json',
'.ttf': 'application/x-font-ttf',
'.scss' : 'text/x-scss',
'.markdown' : 'text/x-markdown',
'.rtf' : 'application/rtf',
'.types' : 'application/octet-stream',
'.eot' : 'application/vnd.ms-fontobject',
".gif": "image/gif",
'.htc' : 'text/x-component',
'.js.orig' : 'application/octet-stream',
'js.rej' : 'application/octet-stream',
".png": "image/png"
};
var isValidExt = validExtensions[ext];
if (isValidExt) {
localPath += filename;
fs.exists(localPath, function(exists) {
if(exists) {
console.log("Serving file: " + localPath);
getFile(localPath, res, isValidExt);;
} else {
console.log("File not found: " + localPath);
res.writeHead(404);
res.end();
}
});
} else {
console.log("Invalid file extension detected: " + ext)
console.log(filename)
console.log(path)
}
}).listen(port, serverUrl);
function getFile(localPath, res, mimeType) {
fs.readFile(localPath, function(err, contents) {
if(!err) {
res.setHeader("Content-Length", contents.length);
res.setHeader("Content-Type", mimeType);
res.statusCode = 200;
res.end(contents);
} else {
res.writeHead(500);
res.end();
}
});
}
我还有一个index.html文件,其中我引用了我的github项目中的其他文件夹。但是,当我运行web.js文件(节点web.js)并转到localhost:8000时,该文件告诉我某处的文件扩展名无效。
其他成员告诉我,这是因为我的req.url等于" /"。任何人都知道如何解决这个问题?
答案 0 :(得分:-1)
理想情况下,您将针对CORS编写一项功能。使用Express CORS中间件。
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/products/:id', function (req, res, next) {
res.json({msg: 'This is CORS-enabled for all origins!'})
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})