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

发布于 2024-11-26 20:13:51 字数 1113 浏览 0 评论 0原文

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

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

Firebug 显示“200 OK”,但未显示响应。即使 Firebug 也不显示 JSON 选项卡。

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

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

对此的任何帮助都将受到高度赞赏。

谢谢。

更新: 我没有使用任何服务器端脚本语言(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 的“Net”选项卡中看到时,我看到一个 JSON 选项卡,并且能够看到 json 响应。但是,“成功”回调处理程序不会被调用,但“错误”回调处理程序会被调用,并且我收到警告:parseerror

知道可能出什么问题吗?

I have a json file hosted on my server. When I try to make an Ajax "GET" request to the json file, it fails.

See the console in Safari, it says "Failed to load resource".

Firebug shows "200 OK", but the response doesn't show up. Even Firebug does not show the JSON tab.

I believe this is because Cross Domain Requests are not allowed using AJAX.

I would like to know how can I overcome this? Also, if I want to enable cross-domain requests on my server, I believe a crossdomain.xml file or something needs to be created. I am not sure, but this is what I know. I searched on Google, but could not find any relevant links.

Any help in this is highly appreciated.

Thanks.

UPDATE:
I am not using any server-side scripting language (PHP, ASP.NET, etc). I am using Plain HTML and JavaScript / jQuery.

UPDATE-2:

I used the following code to make cross-domain requests:

<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);

      },
    });
});

When i see in Firebug's "Net" tab, I see a JSON tab, and I am able to see the json response. However, the "success" callback handler doesn't get called, but the "error" callback handler gets invoked and I get the alert saying parseerror.

Any idea what could be wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

各空 2024-12-03 20:13:51
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
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com

on target server

in php:

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

in case you don't want to use server-scripting language: put this in (linux) console

a2enmod headers

and to your .htaccess file add ­ ­ ­ ­ ­ ­ ­

Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
澉约 2024-12-03 20:13:51

将其放入您的 .htaccess 中,普通的 ajax 就可以工作

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

Put this in your .htaccess and plain ajax works

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>
万人眼中万个我 2024-12-03 20:13:51

genesis 给出的解决方案对我有用,但是我不得不省略网址上的尾部斜杠。 IE:

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

the solution given by genesis worked for me, however I had to omit the trailing slash on the url. ie:

header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文