在没有JSONP的情况下在本地测试不同端口上的Web服务

时间:2013-01-03 12:08:53

标签: web-services node.js angularjs

我正在为一个AngularJS前端编写一个web服务(带有node.js),该前端由node.js托管

稍后将通过domain.com/api下的代理提供,因此我不需要JSONP。

出于本地测试目的,我在localhost:80上运行我的AngularJS应用程序,在localhost:3000上运行我的node.js后端。当然我无法查询json请求。容易

在我的设置中没有搞砸的情况下,在本地测试我的主页的最佳设置是什么?

我目前正在开发Windows。如果它更容易,Linux也是一种选择。

是否可以为同一域中的两个应用程序托管表达的简单代理?

2 个答案:

答案 0 :(得分:0)

您可以使用hosts文件将domain.com/api设置为localhost。这是在Linux中的/etc/hosts中完成的,但它也出现在Windows的某个地方。另一件对我有帮助的事情是ssh隧道。例如,您可以将远程端口(运行后端的位置)隧道传送到ssh -L localPort:your.server:remotePort

的localhost

答案 1 :(得分:0)

这不完全是您所要求的,但最简单的可能是让node.js应用程序同时为AngularJS应用程序提供服务。它非常高效,足以用于开发。

如果是Expressjs应用程序,您只需添加

即可
app.use(express['static'](__dirname + "/public"));

在其他路由之前让它在./public /

中查找静态文件

如果您的应用程序由模板或构建系统提供,您无法在node.js中轻松复制,那么另一个选项是在某个端口(80或5000或...)上运行nginx,apache或haproxy并将该代理应用于应用程序的当前后端服务器以及API /数据请求的端口3000(node.js应用程序)。

您甚至可以让当前在端口80上运行的服务器执行此操作。

作为最后的想法,您还可以设置node.js应用程序代理到端口80以获取“app files”。

编辑 - 我刚刚意识到你的两个应用都是用node.js编写的。是否可以设置它以便在生产中单独运行它们但在开发中一起运行?将所有真正的功能放在模块中,然后有三个单独的“加载器”启动应用程序,一个一起,然后分别为每个加载器。