How to enable cross-domain request on the server?

2019-01-03 10:06发布

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?

3条回答
唯我独甜
2楼-- · 2019-01-03 10:29
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
查看更多
ら.Afraid
3楼-- · 2019-01-03 10:33

Put this in your .htaccess and plain ajax works

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>
查看更多
混吃等死
4楼-- · 2019-01-03 10:39

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");
查看更多
登录 后发表回答