【问题标题】:Avoiding AJAX cross domain limitations避免 AJAX 跨域限制
【发布时间】:2013-12-29 04:13:38
【问题描述】:

如果带有 $.getJSON 的 JS 文件从与 AJAX 请求中的 URL 相同的服务器(域)加载,是否可以避免 AJAX 跨域请求限制? 假设我在 serverA.com 上有一个 web 服务,需要从其他几个域的页面调用,例如subdomain.serverA.com、serverB.com 等 JS 放置在 serverA.com 上,并包含在具有绝对 URL 的不同域的多个页面中:

<script src="http://serverA.com/ajax.js" />

当页面 URL 是例如http://serverB.com/page.html

在这种情况下,$.getJSON('http://serverA.com/service/',... 是否会避免跨域限制?

换句话说,浏览器在评估 AJAX 请求的同源策略时会查看页面 URL 或 JS 源 URL?

【问题讨论】:

标签: javascript ajax cross-domain


【解决方案1】:

听起来你在问“我可以绕过 javascript 的跨域限制吗?”

答案是“是”,使用 JSONP

这里有很多很好的信息:

如果这不是您要问的问题,那么您可能需要稍微澄清一下。

【讨论】:

  • @Quentin 解决了我的疑虑。感谢您链接良好的资源,代理解决方案似乎在我的环境中实现起来最简单。
【解决方案2】:

换句话说,浏览器在评估 AJAX 请求的同源策略时会查看页面 URL 或 JS 源 URL?

同源策略基于运行脚本的 HTML 文档的 URL,而不是脚本本身的 URL。

如果带有 $.getJSON 的 JS 文件从与 AJAX 请求中的 URL 相同的服务器(域)加载,是否可以避免 AJAX 跨域请求限制?

Yes,但不是因为 JS 文件是从那里加载的。脚本的 URL 无关紧要。

【讨论】:

    【解决方案3】:

    我会推荐 Cross Origin Resource Sharing,而不是 JSONP。

    服务的所有者,只需添加一个标头,给出(静态、动态或开放)授权来源列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2011-09-07
      • 2013-02-15
      • 2013-07-09
      • 2012-10-18
      • 2012-12-14
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多