如何在服务器上启用跨域请求



我有一个json文件托管在我的服务器上。当我尝试对json文件进行Ajax"GET"请求时,它失败了。

看Safari的控制台,它说"Failed to load resource"

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

我相信这是因为跨域请求不允许使用AJAX。

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

任何帮助都是非常感谢的。

谢谢。

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

更新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的"Net"选项卡中看到时,我看到一个JSON选项卡,并且我能够看到JSON响应。然而,"成功"回调处理程序没有被调用,但"错误"回调处理程序被调用,我得到警告说parseerror

你知道有什么问题吗?

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

把这个放到你的里。htaccess和纯ajax

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

由genesis给出的解决方案为我工作,但是我必须省略url上的尾斜杠。即:

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

相关内容

  • 没有找到相关文章

最新更新