我正在使用Expedia API使用酒店搜索前端。我设置了一个在 localhost:3000 上运行的 node.js 服务器和一个用于输入位置和日期的简单 Backbone 视图。
但是,当向 Expedia 提交请求时,我总是得到
XMLHttpRequest cannot load ... http://localhost:3000 is not allowed by Access-Control-Allow-Origin.
这是我的提交代码,应该可以正常工作:
$.support.cors = true; // not really done at every request
var from = this.$el.find( "input[name=date-from_submit]" ).val(),
to = this.$el.find( "input[name=date-to_submit]" ).val(),
where = this.ui.place.val();
$.ajax({
"url": "http://api.ean.com/ean-services/rs/hotel/v3/list?" +
"destinationString=" + where +
"&cid=55505" + //test CID
"&minorRev=20" +
"&arrivalDate=" + from +
"&departureDate=" + to +
"&room1=2" +
"&apiKey=<apikey>",
"dataType": "json",
"accept": "application/json"
}).always( function( a, b, c ) {
console.debug( a, b, c );
});
我从 JSFiddle 尝试了这段代码,看看它们是否只禁止localhost
,但无济于事。再次出现同源策略错误。
现在我想知道:
- Expedia 是否完全支持跨域请求?
- 也许我应该在他们网站的某个地方输入我选择的来源?我什么也没找到。
- 如果 1. 的答案是“否”,那么开发人员应该如何使用他们的 API 构建产品?
- 我只是愚蠢吗?
提前致谢!