【问题标题】:How to enable cross-domain request on the server?如何在服务器上启用跨域请求?
【发布时间】:2011-10-15 19:23:35
【问题描述】:

我的服务器上托管了一个 json 文件。当我尝试向 json 文件发出 Ajax“GET”请求时,它失败了。

在 Safari 中查看控制台,显示“加载资源失败”。

Firebug 显示“200 OK”,但没有显示响应。甚至 Firebug 也不显示 JSON 选项卡。

我认为这是因为不允许使用 AJAX 进行跨域请求。

我想知道如何克服这个问题?另外,如果我想在我的服务器上启用跨域请求,我相信需要创建一个 crossdomain.xml 文件或其他东西。我不确定,但这是我所知道的。我在 Google 上搜索,但找不到任何相关链接。

非常感谢您对此提供的任何帮助。

谢谢。

更新: 我没有使用任何服务器端脚本语言(PHP、ASP.NET 等)。我正在使用纯 HTML 和 JavaScript / jQuery。

UPDATE-2:

我使用以下代码进行跨域请求:

<script src="jquery-1.6.2.js"></script>
  <script>
  $(document).ready(function () {
    $.ajax({
      dataType: 'jsonp',
      data: '',
      jsonp: 'jsonp_callback',
      url: 'http://myhosting.net/myjsonfile.json',
      success: function (jsonData) {
        alert("success")
        alert(jsonData);
      },
      error: function(errorObj) {
        alert(errorObj.statusText);

      },
    });
});

当我在 Firebug 的“网络”选项卡中看到一个 JSON 选项卡时,我能够看到 json 响应。但是,“成功”回调处理程序没有被调用,但“错误”回调处理程序被调用,我收到警告说 parseerror

知道可能出了什么问题吗?

【问题讨论】:

标签: ajax json jquery cross-domain


【解决方案1】:
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com

在目标服务器上

在 php 中:

 header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");

如果你不想使用服务器脚本语言:把它放在 (linux) 控制台中

a2enmod headers

并在您的 .htaccess 文件中添加

Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com

【讨论】:

  • 您好,感谢您的回复。我没有使用任何服务器端脚本语言......而只是使用纯 HTML 和 JavaScript / jQuery......你能修改你的答案来满足这个......吗?
  • HTML 不允许更改发送的标头
  • 我是否可以在我的服务器上进行一些设置或要求托管服务提供商允许此类请求?
  • 我会对其进行测试并更新结果..感谢您的宝贵时间!
  • 实际上我正在从网络应用程序请求 json 文件。那么在这种情况下,我该如何设置Access-Control-Allow-Origin.. 的值。有什么想法吗?
【解决方案2】:

把它放在你的 .htaccess 和普通的 ajax 作品中

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>

【讨论】:

    【解决方案3】:

    genesis 给出的解决方案对我有用,但是我不得不省略 url 上的斜杠。即:

    header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
    

    【讨论】:

    • 我应该在客户端代码的哪里添加这个标题行?
    猜你喜欢
    • 2014-06-20
    • 2018-03-02
    • 2012-04-18
    • 2017-06-06
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多