跨域标头获取JSON文件

时间:2017-07-11 22:20:52

标签: jquery json apache .htaccess cross-domain

我正在研究需要从不同服务器下载JSON文件的项目,因为我正在研究jQuery,我希望这将是一个易于实现的任务。

这是我的代码:

    loadJSON: function () {
        var ajaxhttp = new XMLHttpRequest();
        var url = "https://cors-anywhere.herokuapp.com/http://dl.sniper.pl/q/test.json"
        ajaxhttp.open("GET", url, true);
        ajaxhttp.setRequestHeader("content-type", "application/json");
        ajaxhttp.onreadystatechange = function() {
            if (ajaxhttp.readyState == 4 && ajaxhttp.status == 200) {
                    var data = JSON.parse(ajaxhttp.responseText);
                    console.log(data)
            }
        }
        ajaxhttp.send(null);
    },

这个例子很好但是它使用了代理cors-anywhere.herouapp.com,它是在不同的线程中向我建议的。 我想要实现的是有机会直接从我的服务器获取JSON文件。我不想使用可能不可靠的第三方提供商。

我尝试将.htaccess文件更改为:

# Always set these headers.
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

# Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

我把它.htaccess放在目录中我存储JSON文件然而没有任何运气 - 我的chrome总是说我违反了政策或者像这样:

  

XMLHttpRequest无法加载http://dl.sniper.pl/q/test.json。响应   预检无效(重定向)

我被告知这是因为我的服务器没有提供正确的标头。我不确定如何检查它是否属实或找到任何补救措施。考虑我只是服务器的最终用户,我无权更改apache设置(或检查它是否是apache服务器)。 你能帮我解决问题并用JSON获取跨域数据吗?谢谢。

0 个答案:

没有答案