“Origin null is not allowed by Access-Control-Allow-Origin” error for request made by application running from a file:// URL

后端 未结 17 1401
孤城傲影
孤城傲影 2020-11-21 04:42

I\'m developing a page that pulls images from Flickr and Panoramio via jQuery\'s AJAX support.

The Flickr side is working fine, but when I try to $.get(url, ca

相关标签:
17条回答
  • 2020-11-21 05:14

    Make sure you are using the latest version of JQuery. We were facing this error for JQuery 1.10.2 and the error got resolved after using JQuery 1.11.1

    0 讨论(0)
  • 2020-11-21 05:17

    We managed it via the http.conf file (edited and then restarted the HTTP service):

    <Directory "/home/the directory_where_your_serverside_pages_is">
        Header set Access-Control-Allow-Origin "*"
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>
    

    In the Header set Access-Control-Allow-Origin "*", you can put a precise URL.

    0 讨论(0)
  • 2020-11-21 05:17

    In my case, same code worked fine on Firefox, but not on Google Chrome. Google Chrome's JavaScript console said:

    XMLHttpRequest cannot load http://www.xyz.com/getZipInfo.php?zip=11234. 
    Origin http://xyz.com is not allowed by Access-Control-Allow-Origin.
    Refused to get unsafe header "X-JSON"
    

    I had to drop the www part of the Ajax URL for it to match correctly with the origin URL and it worked fine then.

    0 讨论(0)
  • 2020-11-21 05:19

    As final note the Mozilla documentation explicitly says that

    The above example would fail if the header was wildcarded as: Access-Control-Allow-Origin: *. Since the Access-Control-Allow-Origin explicitly mentions http://foo.example, the credential-cognizant content is returned to the invoking web content.

    As consequence is a not simply a bad practice to use '*'. Simply does not work :)

    0 讨论(0)
  • 2020-11-21 05:21

    Not all servers support jsonp. It requires the server to set the callback function in it's results. I use this to get json responses from sites that return pure json but don't support jsonp:

    function AjaxFeed(){
    
        return $.ajax({
            url:            'http://somesite.com/somejsonfile.php',
            data:           {something: true},
            dataType:       'jsonp',
    
            /* Very important */
            contentType:    'application/json',
        });
    }
    
    function GetData() {
        AjaxFeed()
    
        /* Everything worked okay. Hooray */
        .done(function(data){
            return data;
        })
    
        /* Okay jQuery is stupid manually fix things */
        .fail(function(jqXHR) {
    
            /* Build HTML and update */
            var data = jQuery.parseJSON(jqXHR.responseText);
    
            return data;
        });
    }
    
    0 讨论(0)
  • 2020-11-21 05:21

    Folks,

    I ran into a similar issue. But using Fiddler, I was able to get at the issue. The problem is that the client URL that is configured in the CORS implementation on the Web API side must not have a trailing forward-slash. After submitting your request via Google Chrome and inspect the TextView tab of the Headers section of Fiddler, the error message states something like this:

    *"The specified policy origin your_client_url:/' is invalid. It cannot end with a forward slash."

    This is real quirky because it worked without any issues on Internet Explorer, but gave me a headache when testing using Google Chrome.

    I removed the forward-slash in the CORS code and recompiled the Web API, and now the API is accessible via Chrome and Internet Explorer without any issues. Please give this a shot.

    Thanks, Andy

    0 讨论(0)
提交回复
热议问题