node搭建跨域

2020-02-10  本文已影响0人  0安

有node环境,进入项目根目录     创建两个文件  proxy.js  main.js

npm install http-proxy --save-dev

var PORT = 3000;

var http = require('http');

var url = require('url');

var fs = require('fs');

var mine = require('./mine').types;

var path = require('path');

var httpProxy = require('http-proxy');

var proxy = httpProxy.createProxyServer({

target: 'http://dev-web.xzjcloud.com/', //接口地址

// http://java.winfreeinfo.com/

// 下面的设置用于https

// ssl: {

//    key: fs.readFileSync('server_decrypt.key', 'utf8'),

//    cert: fs.readFileSync('server.crt', 'utf8')

// },

// secure: false

// '/api':{

// target: 'http://java.winfreeinfo.com/',

// },

// '/baidu':{

// target: 'http://www.baidu.com/',

// },

});

/****************************/

/****************************/

proxy.on('error', function(err, req, res) {

res.writeHead(500, {

'content-type': 'text/plain'

});

console.log(err);

res.end('Something went wrong. And we are reporting a custom error message.');

});

var server = http.createServer(function(request, response) {

/****************************8/

*

*

*

*/

var pathname = url.parse(request.url).pathname;

//var realPath = path.join("main-pages", pathname); // 指定根目录

var realPath = path.join("./", pathname);

console.log(pathname);

console.log(realPath);

var ext = path.extname(realPath);

ext = ext ? ext.slice(1) : 'unknown';

console.log("********" + pathname)

//判断如果是接口访问,则通过proxy转发

if(pathname.indexOf(".") < 0) {

proxy.web(request, response);

return;

}

// if(pathname.indexOf()!=undefined){

//      proxy.web(request, response);

//  return;

// }

fs.exists(realPath, function(exists) {

if(!exists) {

response.writeHead(404, {

'Content-Type': 'text/plain'

});

response.write("This request URL " + pathname + " was not found on this server.");

response.end();

} else {

fs.readFile(realPath, "binary", function(err, file) {

if(err) {

response.writeHead(500, {

'Content-Type': 'text/plain'

});

response.end(err);

} else {

var contentType = mine[ext] || "text/plain";

response.writeHead(200, {

'Content-Type': contentType

});

response.write(file, "binary");

response.end();

}

});

}

});

});

server.listen(PORT);

console.log("Server runing at port: " + PORT + ".");

这个是proxy.js  设置转发的js文件

以下为main.js是类型

exports.types = {

  "css": "text/css",

  "gif": "image/gif",

  "html": "text/html",

  "ico": "image/x-icon",

  "jpeg": "image/jpeg",

  "jpg": "image/jpeg",

  "js": "text/javascript",

  "json": "application/json",

  "pdf": "application/pdf",

  "png": "image/png",

  "svg": "image/svg+xml",

  "swf": "application/x-shockwave-flash",

  "tiff": "image/tiff",

  "txt": "text/plain",

  "wav": "audio/x-wav",

  "wma": "audio/x-ms-wma",

  "wmv": "video/x-ms-wmv",

  "xml": "text/xml",

  "woff": "application/x-woff",

  "woff2": "application/x-woff2",

  "tff": "application/x-font-truetype",

  "otf": "application/x-font-opentype",

  "eot": "application/vnd.ms-fontobject"

};

上一篇 下一篇

猜你喜欢

热点阅读