首页 文章

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

提问于
浏览
20

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

在Safari中查看控制台,它说“无法加载资源” .

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

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

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

任何帮助都非常感谢 .

谢谢 .

UPDATE: 我没有使用任何服务器端脚本语言(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中看到's 2522241 tab, I see a JSON tab, and I am able to see the json response. However, the 2522242 callback handler doesn'时被调用,但"error"回调处理程序被调用,我得到警告说 parseerror .

知道什么可能是错的吗?

3 回答

  • 6

    由genesis给出的解决方案对我有用,但是我必须省略url上的尾随斜杠 . 即:

    header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
    
  • 38
    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
    
  • 2

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

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

相关问题