javascript - 我如何将 Node.js 与 Cappuccino 一起使用?

标签 javascript node.js same-origin-policy cappuccino

我想在 Cappuccino 中实现一个客户端应用程序使用 Node.js 作为服务器。

我目前让 Node 运行 Express :

var express = require( 'express' );

var app = express();

app.get( '/an_endpoint', function(req, res){

    res.send('Hello From Node Express!\n');

});

app.listen(1337);

可通过以下方式验证:

$ 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 )并单击按钮时,在谷歌浏览器中,在 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.

这显然是因为我的 Node 服务器位于 :1337,而我的 Cappuccino 应用程序位于 :8080,由于端口部分,它们在技术上是不同的域。

一些研究使我找到了 this帖子,建议考虑使用 JSONP 将远程脚本注入(inject)应用程序。这听起来很乱,所以如果没有必要,我不想走那条路。

那么,我的问题是,如何让 Cappuccino 和 Node.js 和谐地协同工作?似乎如果我可以告诉 Cappuccino 应用程序使用这个 ( header("Access-Control-Allow-Origin", "*"); ) header ,一切都应该很好,但我不知道该怎么做。我尝试让 Node 发送该 header ,但它似乎没有做任何事情。

最佳答案

您应该使用 Node 来提供 Cappuccino 应用程序,以便它们都在同一个端口上。

关于javascript - 我如何将 Node.js 与 Cappuccino 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230936/

相关文章:

javascript - 仅将 addEventListener 添加到子菜单链接,无需 jQuery

javascript - 从 RequireJS 获取路径

node.js - 每当我发送消息时,它都会在 react 中多次显示相同的消息

cors - 同源策略是浏览器限制,在服务器端安全吗?

javascript - 为什么我的 JavaScript 代码收到“"No ' Access-Control-Allow-Origin' header is present on the requested resources”错误,而 Postman 却没有?

javascript - 如何使用 Javascript 向文本框添加值

javascript - 在 Node Js 中使用异步函数比使用同步函数有什么性能优势吗?

node.js - 在 NodeJS 中优雅地处理子进程中的错误

javascript - 鼠标在 iframe 上的位置

javascript - 在Textmate中调试javascript