0

我在我的机器上的 Apache 下部署了一个 HTML + KnockoutJS + JQuery 站点,可在http://daily/admin.html(或http://localhost/admin.html)访问。后端在 Sinatra 中构建并在 rackup 下运行,因此我可以访问它的 APIhttp://localhost:9292/api/items 问题是,如果我执行 AJAX GET 请求,我会得到:

XMLHttpRequest cannot load http://localhost:9292/api/items. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

我的解决方法是将以下行添加到 Sinatra 应用程序:

headers['Access-Control-Allow-Origin'] = 'http://daily'

问题是现在我无法使用 Ajax 进行 POST。我收到以下消息:

Cross origin requests are only supported for HTTP.

JSONP 是一种选择吗?我可以使用 JSONP 进行 POST 吗?

4

1 回答 1

1

在这种情况下,您可以使用 JSONP。

使用上面的这段代码,我想你错过了一些东西

headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept'
headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE, OPTIONS'
于 2013-11-02T02:54:04.323 回答