跨域 jquery 1.6.2 ajax 调用尝试从同一域调用
我在另一个域(域 B (api.domainb.com))上设置了一个 api,并且想要从域 A (www.domaina.com) 调用它。但是,当我通过 jquery ajax 从域 A 到域 B 进行调用时,jquery 最终会尝试调用 www.domaina.com/api.domainb.com ,这显然会返回错误。这是相关的javascript代码
$.ajax(
url: 'http://api.domainb.com',
type: 'GET',
dataType: 'jsonp',
data: {hello: 'world'},
crossDomain: true,
success: function(data){
alert(JSON.stringify(data))
},
error: function(error){
alert(JSON.stringify(error))
});
最终,域A和域B中的代码将在同一个域上,但现在,我需要进行跨域调用。关于如何开展这项工作有什么建议吗?
I have an api set up on another domain, domain B (api.domainb.com), and want to make a call to it from domain A (www.domaina.com). However, when I do a call from domain A to domain B via jquery ajax, jquery ends up trying to call www.domaina.com/api.domainb.com which obviously will return an error. Here is the relevant javascript code
$.ajax(
url: 'http://api.domainb.com',
type: 'GET',
dataType: 'jsonp',
data: {hello: 'world'},
crossDomain: true,
success: function(data){
alert(JSON.stringify(data))
},
error: function(error){
alert(JSON.stringify(error))
});
Eventually, the code in domain A and domain B will be on the same domain, but for now, I need to make a cross-domain call. Any suggestions as to how to make this work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您只是缺少协议,以便 Ajax 调用知道它是不同的域而不是相对 URL。尝试使用
url:'http://api.domainb.com'
。You're just missing the protocol so that the Ajax call knows it's a different domain and not a relative URL. Try using
url: 'http://api.domainb.com'
.无法跨域调用;一般浏览器根本不允许这样做。但是,您看到所描述的行为的原因是您的 URL 缺少“http://”前缀。
您可以使用相当新的 HTML5 API 有点“获得许可”进行跨域调用。
编辑 @Dan 正确地指出,虽然 XMLHttpRequest(人们通常称之为“ajax”)不会执行跨域操作(除了 CORS),但可以利用
< script>
标签可以引用其他域以组合服务。但是,服务器端代码必须不同。 (通常称为“JSONP”。)You cannot make cross-domain calls; browsers simply do not allow it in general. However, the reason you're seeing the behavior you describe is that your URL is missing the "http://" prefix.
There are some things you can do with fairly new HTML5 APIs to sort-of "get permission" to do cross-domain calls.
edit @Dan points out correctly that while XMLHttpRequest (what people usually call "ajax") won't do cross-domain stuff (CORS aside), it's possible to leverage the fact that
<script>
tags can reference other domains in order to put together a service. The server-side code has to be different, however. (That's usually called "JSONP".)