javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

如何使用Socket.io保护Node.js中的分布式拒绝服务攻击?

我最近一直在学习node.js和socket.io。 我的问题是如何保护服务器免受客户端攻击?

这是我的服务器代码

io.sockets.on('connection', function (socket) { 
//users.push(socket);       
socket.on('message', function (data) {      

    socket.on('disconnect', function () { });           

    socket.on('bcast', function (data) {        
        socket.emit('news', { 'data': data });
        socket.broadcast.emit('news', { 'data': data });     
    });

    socket.on('login', function(data){
      socket.emit('login', {'data': [ socket.id, data ] });
    });
   });
 });

例如,如果客户使用chrome开发人员工具来编写流畅的代码

 for(var i = 0; i<99999999999; i++)
 {
        socket.emit('bcast', {data: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'});
 }

它会杀死服务器。

trans by 2020-07-12T19:40:33Z

javascript-NodeJs child_process工作目录

我试图在一个不同于父目录的目录中执行子目录。

var exec = require('child_process').exec;

exec(
    'pwd',
    {
        cdw: someDirectoryVariable
    },
    function(error, stdout, stderr) {
        // ...
    }
);

我正在做上面的事情(尽管运行“ pwd”当然不是我最后要做的事情)。 不管我为cdw选项提供了什么值,最终都会将父进程的pwd写入stdout。

我想念什么?

(我确实确保通过cwd选项传递的路径确实存在)

trans by 2020-07-12T15:51:25Z

jQuery-Node.js:Ajax与Socket.IO的优缺点

我考虑过摆脱所有客户端Ajax调用(jQuery),而是使用永久套接字连接(Socket.IO)。

因此,我将在客户端和服务器端使用事件侦听器/发射器。

例如 用户在浏览器中触发单击事件,客户端发射器通过套接字连接将事件推送到服务器。 服务器端侦听器对传入事件做出反应,并将“完成”事件推回客户端。 客户端的侦听器通过淡入DIV元素对传入事件做出反应。

这完全有意义吗?优点缺点?

trans by 2020-07-12T11:08:00Z

node.js-错误:大多数中间件(如bodyParser)不再与Express捆绑在一起

我需要创建一个Web服务,并且正在服务器中使用Node.js。 但是当我在本地主机上运行时,出现错误:

错误:大多数中间件(如bodyParser)不再与Express捆绑在一起,必须单独安装。 请参阅[https://github.com/senchalabs/connect#middleware。]

neo4jtest.js

var config = require('./config');   
var bodyParser = require('body-parser'); 

var app = express();

var neo4jurl = process.env.NEO4J_URL ;
neo4jurl = neo4jurl +'/db/data/';

var query = [ 'START me=node:node_auto_index(name={inputusername}) MATCH me<--friend<--friend_of_friend where (friend_of_friend.entitytype={inputentitytype}) RETURN friend_of_friend;' ];
var insertquery = [ 'CREATE (user {entitytype:{inputentitytype}, name : {inputname}}) return user;' ];
var queryforallrelation = [ 'start n = node:node_auto_index(name={inputusername}) match(n)--(x)  return x;'];

// Config


    var env = process.env.NODE_ENV || 'development';
    if ('development' == env) {
    // configure stuff here
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(application_root, "public")));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    }

app.get('/api', function (req, res) {
  res.send('REST API is running');
});

app.get('/friendoffriend/:username', function (req, res){
    res.set({'Content-Type': 'text/json'});
    username = req.params.username;
    type = 'user';
    neo4j.connect(neo4jurl, function (err, graph) {

            graph.query(query.join('\n'), {inputusername : username, inputentitytype :type} ,function (err, results) {  
                if (err) {
                    res.send(HTTPStatus.INTERNAL_SERVER_ERROR,'Internal Server Error');
                }
                else {
                    res.send(HTTPStatus.OK,JSON.stringify(results));
                }
            }); 
    });
});

app.get('/insertuser/:username', function (req, res){
    res.set({'Content-Type': 'text/json'});
    username = req.params.username;
    type = 'user';
    neo4j.connect(neo4jurl, function (err, graph) {
            graph.query(insertquery.join('\n'), {inputname : username, inputentitytype :type} ,function (err, results) {    
                if (err) {
                    res.send(HTTPStatus.INTERNAL_SERVER_ERROR,'Internal Server Error');
                }
                else {
                    res.send(HTTPStatus.OK,JSON.stringify(results));
                }
            }); 
    });
});

//Cypher Query with Javascript Callback Example

function neo4jQuery(neo4jurl, query, parameters, giveresults) {
    neo4j.connect(neo4jurl, function (err, graph) {
        graph.query(query.join('\n'), {inputusername : 'andrew'} ,function (err, results) { 
            if (err) {
                giveresults(HTTPStatus.INTERNAL_SERVER_ERROR);
            }
            else {
                giveresults(JSON.stringify(results));
            }
        }); 
    });
}

app.get('/allrelations/:username', function (req, res){
    res.set({'Content-Type': 'text/json'});
    username = req.params.username;
    parameters = {inputusername : username};
    neo4jQuery(neo4jurl, queryforallrelation, parameters, function(results){
        res.send(results);
    });
});



app.listen(1212);

以下是我从控制台收到的错误:

C:\node\NodejsNeo4j1-master>node neo4jtest.js

Error: Most middleware (like bodyParser) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
    at Function.Object.defineProperty.get (C:\node\NodejsNeo4j1-master\node_modules\express\lib\express.js:89:13)
    at Object.<anonymous> (C:\node\NodejsNeo4j1-master\neo4jtest.js:26:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3
trans by 2020-07-12T10:54:45Z

javascript-Node.js安装:openssl未安装

我已经安装了libssl-dev和openssl,但是在安装node.js时得到了以下信息:

> ./configure && make && make install                                                                                          
Checking for program g++ or c++          : /usr/bin/g++                                                                                                               
Checking for program cpp                 : /usr/bin/cpp                                                                                                               
Checking for program ar                  : /usr/bin/ar                                                                                                                
Checking for program ranlib              : /usr/bin/ranlib                                                                                                            
Checking for g++                         : ok                                                                                                                         
Checking for program gcc or cc           : /usr/bin/gcc                                                                                                               
Checking for gcc                         : ok                                                                                                                         
Checking for library dl                  : yes                                                                                                                        
Checking for openssl                     : not found                                                                                                                  
Checking for function SSL_library_init   : yes                                                                                                                        
Checking for header openssl/crypto.h     : yes                                                                                                                        
Checking for library rt                  : yes                                                                                                                        
Checking for fdatasync(2) with c++       : yes 

找不到Openssl。 但是节点已成功安装。

为什么找不到openssl? 有人有同样的问题吗?

trans by 2020-07-12T07:09:41Z

javascript-在保存时编译CoffeeScript吗?

无论如何,是否可以在保存时轻松编译CoffeeScript? 我正在使用TextMate或Sublime Text 2。

trans by 2020-07-11T21:07:01Z

javascript-如何将React + NodeJS Express应用程序部署到AWS?

我有一个React + Webpack / Babel + Node / Express应用程序,我想在AWS上部署它。

我需要分别部署React和Node / Express吗? 还是可以同时部署它们?

trans by 2020-07-11T20:14:23Z

node.js-错误:g的nodejs中的getaddrinfo ENOTFOUND

我正在节点上运行Web服务器,其代码如下

var restify = require('restify');

var server = restify.createServer();

var quotes = [
  { author : 'Audrey Hepburn', text : "Nothing is impossible, the word itself says 'I'm possible'!"},
  { author : 'Walt Disney', text : "You may not realize it when it happens, but a kick in the teeth may be the best thing in the world for you"},
  { author : 'Unknown', text : "Even the greatest was once a beginner. Don't be afraid to take that first step."},
  { author : 'Neale Donald Walsch', text : "You are afraid to die, and you're afraid to live. What a way to exist."}
];

server.get('/', function(req, res) {
  res.json(quotes);
});

server.get('/quote/random', function(req, res) {
  var id = Math.floor(Math.random() * quotes.length);
  var q = quotes[id];
  res.json(q);
});

server.get('/quote/:id', function(req, res) {
  if(quotes.length <= req.params.id || req.params.id < 0) {
    res.statusCode = 404;
    return res.send('Error 404: No quote found');
  }

  var q = quotes[req.params.id];
  res.json(q);
});

server.listen(process.env.PORT || 3011);

然后我想在以下代码中进行获取请求

var https = require('http');

/**
 * HOW TO Make an HTTP Call - GET
 */
// options for GET
var optionsget = {
    host : 'http://localhost',
    port : 3010,
    path : '/quote/random', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};

console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');

// do the GET request
var reqGet = https.request(optionsget, function(res) {
    console.log("statusCode: ", res.statusCode);
    // uncomment it for header details
//  console.log("headers: ", res.headers);


    res.on('data', function(d) {
        console.info('GET result:\n');
        process.stdout.write(d);
        console.info('\n\nCall completed');
    });

});

reqGet.end();
reqGet.on('error', function(e) {
    console.error(e);
});

我只是从节点开始,我什至不知道这是否是正确的方法。我想测试express和restify的性能。我对我编写的服务器代码进行了apache基准测试,发现矛盾的结果是restify更好。所以我想通过调用远程服务来进行更多测试 读写到mongodb。上面的代码是我的起点。我遇到了错误

{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }

我是否至少朝写方向前进? 我要进行哪种测试的正确方法是什么? 为什么我得到的结果重新调整的速度快于表达? 谁能指导我找到在node / express / backbone和mongodb中应用的最佳入门教程?

trans by 2020-07-11T17:00:35Z

流程-在Node.js中的两个不同流程之间进行通信

问题是:

  • 假设我们有两个正在运行的Node.js进程:example1.jsexample2.js

  • example1.js中,有example2.js函数,其结果返回example1.js

  • example1.js内部可以调用example2.js并获取example1.js作为结果吗?

从我对Node.js的了解中,我仅找到一种使用套接字进行通信的解决方案。 但是,这不是理想的,因为它将需要一个进程在端口上侦听。 如果可能,我希望避免这种情况。


编辑:经过一些问题,我想补充一点,在层次结构example1.js不能是example2.js的子进程,而恰恰相反。 同样,如果有帮助,则只能有一个example1.js处理自己的数据,许多example2.js会处理自己的数据+来自第一个进程的数据。

trans by 2020-07-11T14:02:46Z

node.js-Homebrew npm安装:无法symlin

所以我犯了试图摆脱所有sudo依赖关系的错误。 我从网站上以软件包的形式下载了npm并进行了手动/全局安装。 但是似乎我一直都必须使用sudo运行...所以我试图卸载并使用自制软件运行。

现在我什至无法运行node或npm ...我想我必须与brew连接它们,但是我遇到了这个错误:

Could not symlink share/doc/node/gdbinit
Target /usr/local/share/doc/node/gdbinit
already exists. You may want to remove it:
  rm '/usr/local/share/doc/node/gdbinit'

我试着删除它:而且我已经被拒绝了。

我尝试过运行酿造梅子。我尝试卸载,然后使用以下步骤重新安装:

$ brew uninstall npm
$ brew uninstall node
$ npm uninstall npm -g
$ sudo rm -rf /usr/local/lib/node_module

错误:“ brew link”步骤未成功完成

我正在运行优胜美地10.10.5。 我安装了git版本2.6.0。 我的自制软件已更新。 一位酿酒医生给我这个警告:

Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
    node

不知道从这里去哪里。 我试图摆脱对CodeKit的依赖,大干一场。

trans by 2020-07-11T08:19:12Z

javascript-dnode和nowjs有什么区别?

两者如何比较?

trans by 2020-07-11T04:27:11Z

javascript-使用meteor.js有哪些(潜在)缺点?

我刚刚看过meteor.js的截屏视频,就实时更新和数据库同步而言,用它构建Web应用程序看起来多么容易,这让我非常震惊。 但是,我不确定它一旦启用就可以扩展到什么程度。

如果我决定构建和部署用meteor.js编写的Web应用程序,可能会遇到哪些问题(潜在的或实际的)?

trans by 2020-07-11T01:29:16Z

node.js-Node Sequelize中预先加载模型的排序结果

我有一组复杂的关联模型。 这些模型使用联接表进行关联,每个联接表都具有一个称为“ order”的属性。 我需要能够查询父模型“页面”并包括关联的模型,并按“订单”字段对这些关联进行排序。

以下内容对结果的排序顺序没有影响:

db.Page.findAll({
  include: [{
    model: db.Gallery,
    order: ['order', 'DESC'],
    include: [{
      model: db.Artwork,
      order: ['order', 'DESC']
    }]
  }],
})
trans by 2020-07-10T11:49:08Z

无法使用“ npm install”在Node.js中安装任何软件包

我是Node.js的新手,并且正在阅读一些教程。由于某种原因,我无法安装任何新的节点模块。

我在用:Mac OSX 10.7.4,节点v.0.8.6,NPM v.1.1.48。

我运行npm install X,我总是得到一个

npm ERR! fetch failed https://registry.npmjs.org/-/X
npm ERR! Error: 404 Not Found

当我实际进入npmjs注册表时,我可以看到项目页面,但是无论我点击哪个tarball链接,它都是一样的:

{
    "error": "not_found",
    "reason": "document not found"
}

例如,我尝试通过运行npm install fs来安装fs,我得到:

npm http GET https://registry.npmjs.org/fs
npm http 200 https://registry.npmjs.org/fs
npm http GET https://registry.npmjs.org/-/fs-0.0.0.tgz
npm http 404 https://registry.npmjs.org/-/fs-0.0.0.tgz
npm ERR! fetch failed https://registry.npmjs.org/-/fs-0.0.0.tgz
npm ERR! Error: 404 Not Found
npm ERR!     at null.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/fetch.js:47:16)
npm ERR!     at EventEmitter.emit (events.js:115:20)
npm ERR!     at WriteStream.flush (fs.js:1514:12)
npm ERR!     at fs.close (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:92:5)
npm ERR!     at Object.oncomplete (fs.js:297:15)
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 11.4.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "fs"
npm ERR! cwd /Users/comocomo/Documents/workspace/nodeTest
npm ERR! node -v v0.8.6
npm ERR! npm -v 1.1.48
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/comocomo/Documents/workspace/nodeTest/npm-debug.log
npm ERR! not ok code 0

我尝试了fs,fs-extra,express和可怕,它们都给了我相同的404响应。我一定有什么问题,我敢肯定整个注册表都没有损坏。

我在使用旧的注册表吗? 我应该在配置文件中更改它吗? 老实说,我宁愿不开始手动安装东西,我敢肯定这只是一个小配置问题。

谢谢!

trans by 2020-07-10T11:44:53Z

node.js-为开发环境分配域名到localhost

我正在建立一个网站,并且不想将网站从指向www.example.com重定向到2959894053237837818369。此外,我使用的证书当然是使用正确的域名http://www.example.com/xyz制作的,但是我的测试环境会拨打http://127.0.0.1:8000/xyz的电话, 安全无法正常工作。

我现在要做的是配置开发环境,将域名www.example.com分配给http://www.example.com/xyz,以便将http://www.example.com/xyz都路由到http://127.0.0.1:8000/xyz,并将https://www.example.com/xyz路由到https://127.0.0.1:8080/xyz

我没有使用Apache。 我目前正在使用node.js作为我的Web服务器,并且我的开发环境在Mac OS X Lion中。

trans by 2020-07-10T06:05:48Z

node.js-错误:jQuery需要带有文档的窗口

因此,在进行npm更新之前,一切都工作得很好,现在一切都不再像以前那样正常。

一点背景:在我的代码中,我使用jquery解析文本html。 我不使用窗口,也不使用jsdom。 过去可以很好地做到这一点:

$ = require("jquery"); 
$(html).find("<h1>").html("The title"); 

但是现在我得到了:jQuery需要带有文档的窗口

我该如何解决?

trans by 2020-07-09T18:09:17Z

javascript-TypeError:无法与“ undefined”或“ null”匹配

client.createPet(pet, (err, {name, breed, age}) => {
  if (err) {
    return t.error(err, 'no error')
  }
  t.equal(pet, {name, breed, age}, 'should be equivalent')
})

错误

client.createPet(pet, (err, {name, breed, age}) => {
                        ^

TypeError: Cannot match against 'undefined' or 'null'.

为什么会出现此错误? 我对ES6的了解使我推测,仅当阵列或对象被解构或其子级为undefinednull时,才会出现此错误。

我不知道将函数参数用作匹配项。 如果它们是它们,那么为什么我尝试破坏其中之一只是一个错误? (不是undefinednull)。

trans by 2020-07-09T08:39:06Z

node.js-如何使用Cookie创建HTTP客户端请求?

我有一个node.js Connect服务器,用于检查请求的Cookie。 为了在节点中测试它,我需要一种写客户端请求并将cookie附加到它的方法。 我知道HTTP请求对此具有'cookie'标头,但我不确定如何设置和发送它-我还需要在同一请求中发送POST数据,因此我目前正在使用danwrong的restler模块, 但似乎没有让我添加该标头。

关于如何使用硬编码Cookie和POST数据向服务器发出请求的任何建议?

trans by 2020-07-09T07:08:55Z

node.js-模块版本不匹配。 预期为11,得到1

Platform: Linux

运行我的node.js程序时,出现以下错误

Error: Module version mismatch. Expected 11, got 1.
trans by 2020-07-08T18:18:37Z

javascript-异步node.js调用中的错误处理

我对Node.js并不陌生,尽管我通常对JavaScript非常熟悉。 我的问题是关于如何处理node.js中的错误的“最佳实践”。

通常,在对Web服务器,FastCGI服务器或各种语言的网页进行编程时,我在多线程环境中使用带有阻止处理程序的Exceptions。 当有请求进入时,我通常会执行以下操作:

function handleRequest(request, response) {
  try {

    if (request.url=="whatever")
      handleWhateverRequest(request, response);
    else
      throw new Error("404 not found");

  } catch (e) {
    response.writeHead(500, {'Content-Type': 'text/plain'});
    response.end("Server error: "+e.message);
  }
}

function handleWhateverRequest(request, response) {
  if (something) 
    throw new Error("something bad happened");
  Response.end("OK");
}

这样,我始终可以处理内部错误并向用户发送有效响应。

我知道使用node.js可以执行非阻塞调用,这显然会导致各种回调,例如以下示例:

var sys    = require('sys'),
    fs     = require('fs');

require("http").createServer(handleRequest).listen(8124);

function handleRequest(request, response) {

  fs.open("/proc/cpuinfo", "r",
    function(error, fd) {
      if (error)
        throw new Error("fs.open error: "+error.message);

      console.log("File open.");

      var buffer = new require('buffer').Buffer(10);
      fs.read(fd, buffer, 0, 10, null,
        function(error, bytesRead, buffer) {

          buffer.dontTryThisAtHome();  // causes exception

          response.end(buffer);
        }); //fs.read

    }); //fs.open

}

此示例将完全杀死服务器,因为未捕获异常。我的问题是我再也不能使用单个try / catch,因此通常无法捕获在处理请求期间可能引发的任何错误。

当然,我可以在每个回调中添加try / catch,但是我不喜欢这种方法,因为这取决于程序员他不会忘记try / catch。 对于具有许多不同和复杂处理程序的复杂服务器,这是不可接受的。

我可以使用全局异常处理程序(防止整个服务器崩溃),但是由于我不知道哪个请求导致异常,所以我无法向用户发送响应。 这也意味着请求保持未处理/打开状态,浏览器一直在等待响应。

有人有好的坚如磐石的解决方案吗?

trans by 2020-07-08T15:47:39Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共174页