【问题标题】:How to access a url using ajax from another url, same server just different domain如何使用 ajax 从另一个 url 访问 url,同一服务器只是不同的域
【发布时间】:2011-09-16 17:17:30
【问题描述】:

我有一台托管 2 个不同域的服务器,据我所知,我无法使用 Javascript 从一个域向另一个域发起请求。所以我想知道我怎样才能做到这一点?

我想要完成的是在加载时从另一个 url 获取 json,然后在当前 url 中使用 javascript 处理它。到目前为止,我只有一个按钮(一个带有预填充输入字段的表单),当您单击它时,它会将我带到另一个 url,但我还没有弄清楚如何才能使它 a) 自动加载和 b ) 不会把我带到另一个站点,只是获取数据并将其返回给我。我的方法总是以我做不到的 ajax 告终。有什么想法吗?

【问题讨论】:

  • 相同的服务器,但不同的域?!相同的物理服务器? ;)
  • 是的,同一台物理服务器,只是它托管多个域

标签: javascript ajax cross-domain


【解决方案1】:

你可以让你的 JS 添加一个 <script> 标签来加载数据(参见 http://en.wikipedia.org/wiki/JSONP)。

【讨论】:

  • 问题,在我加载<script> 中的数据后,我现在如何访问它?我之所以问,是因为我收到以下消息:“资源解释为脚本,但使用 MIME 类型 text/html 传输。”
  • 听起来你需要将 mime 标头设置为 text/javascript 或 application/json
  • @mplungjan 我无法在仅在我正在处理的文件上返回数据的脚本上更改它们,我还能做些什么吗?
【解决方案2】:

解决方案可以是 JSONP(由 rczajka 建议)或在您的情况下 - 因为您可以访问另一台服务器,CORS - 这是来自 MDN 的解释

【讨论】:

    【解决方案3】:

    浏览器将通过发送一个从域的服务器请求数据 带有原点值的原点标头。它只会完成 如果服务器以 Access-Control-Allow-Origin 响应,则连接 * 的标头或请求页面的确切 URL。网络服务器 来自另一个域的必须发送响应头:

    MDN:https://developer.mozilla.org/en/HTTP_access_control

    MSDN:http://msdn.microsoft.com/en-us/library/dd573303%28v=vs.85%29.aspx

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多