Chrome 中的 Access-Control-Allow-Origin 不允许使用 Origin null。加载 JSON [重复]

Posted

技术标签:

【中文标题】Chrome 中的 Access-Control-Allow-Origin 不允许使用 Origin null。加载 JSON [重复]【英文标题】:Origin null is not allowed by Access-Control-Allow-Origin in Chrome. Loading JSON [duplicate] 【发布时间】:2013-05-29 20:45:39 【问题描述】:

我编写了从 json 文件中获取数据的脚本。它在 Firefox 中可以正常工作,但在 Chrome 中是错误的:

OPTIONS file:///home/[...]/tilemaps/testmap.json Access-Control-Allow-Origin 不允许 Origin null。 jquery.js:6 XMLHttpRequest 无法加载 file:///home/[...]/tilemaps/testmap.json。 Access-Control-Allow-Origin 不允许 Origin null。

这是代码:

function newTileMapFromJSON(src) 
    var mymap;
    $.getJSON(src, function(data) 
        mymap = data;
        //console.log(mymap);
        console.log("Mapa 0, 0 : " + mymap.layers[0].data[0]);
        var wOfArray = mymap.layers[0].width;
        var hOfArray = mymap.layers[0].height;
        var mapArr = [];
        var imAt = 2;
        for (var x = 0; x < wOfArray; x++) 
            for (var y = 0; y < hOfArray; y++) 
                console.log("imAt" + imAt + " x: " + x);
                mapArr[x][y] = mymap.layers[0].data[imAt];
                imAt++;
            
        
        console.log("mapArr: " + mapArr);
    );


newTileMapFromJSON("tilemaps/testmap.json");

为什么它不起作用?为什么它可以在 Firefox 上运行,但不能在 Chrome 上运行。 PS:在 Firefox 中,for 循环只能工作一次。但它应该工作 25x25 次:/

【问题讨论】:

如果我没记错的话,Chrome 不喜欢从本地服务器拉取文件。 但是当我把它放在服务器上时它会起作用吗?如果是的话,没关系。我会在服务器上工作 【参考方案1】:

file:/// 被认为本质上是危险的。如果您希望 chrome 在从文件而不是从 localhost 服务器(python -m SimpleHTTPServer 等)运行时允许 XHR 检索,那么您将不得不使用标志 --allow-file-access-from-files 启动 Chrome

【讨论】:

以上是关于Chrome 中的 Access-Control-Allow-Origin 不允许使用 Origin null。加载 JSON [重复]的主要内容,如果未能解决你的问题,请参考以下文章

[Doc]MongoDB用户创建与启用access-control

Spring Security(三十):9.5 Access-Control (Authorization) in Spring Security

是否可以捕获 CORS 错误?

如何在ajax中解决跨域[重复]

IE XdomainRequest CORS 问题

选项预检未在 jQuery 中处理