Javascript 如何将Node.js与Cappuccino一起使用?
我希望在中实现一个使用Node.js作为服务器的客户端应用程序 我当前已使节点与以下设备一起运行: 可通过以下方式验证:Javascript 如何将Node.js与Cappuccino一起使用?,javascript,node.js,same-origin-policy,cappuccino,Javascript,Node.js,Same Origin Policy,Cappuccino,我希望在中实现一个使用Node.js作为服务器的客户端应用程序 我当前已使节点与以下设备一起运行: 可通过以下方式验证: $ node hello_echo.js $ curl http://127.0.0.1:1337/an_endpoint > Hello From Node Express! 就客户端代码而言,它是一个简单的小应用程序,单击按钮时会执行此操作: // in did finish launching [button setTitle:"Ping Node"]; [bu
$ node hello_echo.js
$ curl http://127.0.0.1:1337/an_endpoint
> Hello From Node Express!
就客户端代码而言,它是一个简单的小应用程序,单击按钮时会执行此操作:
// in did finish launching
[button setTitle:"Ping Node"];
[button setTarget:self];
[button setAction:@selector(doPing:)];
- (void)doPing:(id)sender
{
var connection = [CPURLConnection connectionWithRequest:[CPURLRequest requestWithURL:'http://127.0.0.1:1337/an_endpoint/'] delegate:self];
}
- (void)connection:(CPURLConnection) connection didReceiveData:(CPString)data
{
alert('Node Says: ' + data);
}
- (void)connection:(CPURLConnection)connection didFailWithError:(CPString)error
{
alert('Error: ' + error);
}
当我加载应用程序时(从http://127.0.0.1:8080/NewApplication/index.html
)然后单击Google Chrome中的按钮,在OS X上,我在控制台中看到以下错误,第一个是由于后者引起的:
OPTIONS http://127.0.0.1:1337/an_endpoint/ 404 (Not Found) Objective-J.js:716
XMLHttpRequest cannot load http://127.0.0.1:1337/an_endpoint/.
Origin http://127.0.0.1:8080 is not allowed by Access-Control-Allow-Origin.
很明显,这是因为我的节点服务器位于:1337,而我的卡布奇诺应用程序位于:8080,由于端口部分的原因,这两个域在技术上是不同的
我做了一点研究后发了一篇博文,其中建议考虑使用JSONP将远程脚本注入到应用程序中。听起来很乱,所以如果没有必要,我不想走那条路
所以,我的问题是,如何让Cappuccino和Node.js协调工作?似乎如果我能告诉卡布奇诺应用程序使用这个(
标题(“Access Control Allow Origin”、“*”);
)标题,一切都会很好,但我不确定如何做到这一点。我尝试让Node发送该头,但它似乎没有任何作用。您应该使用Node为Cappuccino应用程序提供服务,使其位于同一端口上 我该怎么做?现在它正在使用一些Jack和Jill的东西。Jack是一个开发服务器,类似于Rack。在Chrome的本地开发中,它只被用于通过可怕的同源政策。您使用node/express提供卡布奇诺应用程序的方式与提供任何静态文件的方式相同。
OPTIONS http://127.0.0.1:1337/an_endpoint/ 404 (Not Found) Objective-J.js:716
XMLHttpRequest cannot load http://127.0.0.1:1337/an_endpoint/.
Origin http://127.0.0.1:8080 is not allowed by Access-Control-Allow-Origin.