使用Node.JS作为REST服务器和Web服务器
我正在用Angular.js和Node.js写一个应用程序。
有一个用HTML和Angular.js编写的客户端应用程序 ,需要像Apache这样的Web服务器才能联机。
在Node.js中还有一个服务器端REST webservice ,它build立在restify
(但我不在乎使用哪个REST API,我可以使用另一个REST API)。
我可以使用REST Web服务的Node.js服务器和服务客户端Web应用的另一个Node.js服务器来完成整个工作。 但我想只有一个Node.js服务器运行 ,在一个URL /端口(以防止跨域AJAX请求)。
我怎么能这样做?
不知道这是否适用于您当前的问题 – 但Express中的app.use()
可以让一个主应用程序设置子应用程序来处理不同的路由前缀。 因此,您可以让主要应用程序将任何以/store/
开头的请求指向一个Express应用程序,以及使用第二个Express应用程序对/app/
任何请求。
您可以在Nodejs之前使用代理。 最快的nginx
例子(nginx):
server { listen 80; server_name example.com # Only http://example.com/api/~ location /api/ { proxy_pass http://localhost:8000; # node.js app proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* \.(jpg|jpeg|gif|png|css|js|json|woff|zip|tgz|gz|swf|ico|txt|xml)$ { expires max; root /var/www/site_path; } }
你想同时提供客户端应用程序和API的URL …
(to prevent cross-domain AJAX requests).
为什么? 这不会扩展和违背标准的restful API implimentations。 最终你会想要支持CORS,因为在IE11和IE12的新版本推出的时候,最早将会在明年推出CORS。 JSONP可以是一个后备,直到他们得到。
cross-domain AJAX requests
没有什么问题,最近也被鼓励了,因此这个公约的广泛采用。
如果您确实需要限制跨域API请求,则只需在您的节点服务器上将您想要授予访问权限的域列入白名单即可。
你想同时服务于同一端口的客户端应用程序和API …
-
通过NGINX在api.domain.com上代理通过节点服务器。
-
将客户端应用程序移到NGINX下的静态文档根目录下。
现在两个都坐在PORT 80上,只有一个节点服务器正在使用。
- 如何在节点js中同步我的函数调用?
- 使用pdfMake通过Node Express将PDF内容返回给浏览器
- angular度路线不工作 – 一些模板url错误
- 由于“没有捕获的浏览器”消息,Karma没有运行unit testing
- expressjs中间件的“res.sendFile”和angular度客户端的“ng-src”的组合不起作用
- JavaScript知识库,markdown wysiwyg(和后面),图像编辑,然后出口pdf
- 使用适用于Visual Studio的Angular和NodeJS工具构buildNodeJS应用程序
- validationJson Web令牌并在login后redirect
- AngularJS和ExpressJS会话pipe理?