我在我的机器上的Apache下部署了一个HTML + KnockoutJS + JQuery站点,可在http://daily/admin.html
(或http://localhost/admin.html
)访问。后端内置于Sinatra并在rackup下运行,因此我可以在http://localhost:9292/api/items
访问其API
问题是如果我做一个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吗?
答案 0 :(得分:1)
您可以在这种情况下使用JSONP。
使用上面的代码,我想你错过了什么
headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept'
headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE, OPTIONS'