跨域 jquery 1.6.2 ajax 调用尝试从同一域调用

发布于 2024-12-04 02:23:06 字数 579 浏览 0 评论 0原文

我在另一个域(域 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

乖不如嘢 2024-12-11 02:23:06

您只是缺少协议,以便 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'.

幸福不弃 2024-12-11 02:23:06

无法跨域调用;一般浏览器根本不允许这样做。但是,您看到所描述的行为的原因是您的 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".)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文