XmlHttpRequest失败(没有'Access-Control-Allow-Origin'标题)

时间:2016-07-31 18:29:37

标签: javascript node.js xmlhttprequest

我知道有很多这样的问题,但我无法用提供的解决方案来解决我的问题。 首先,我有一个简单的node.js webserver:

var serveFile = function(path, response) {
    fs.readFile(__dirname + path, function(err, data) {
        if (err) {
            console.log('There is no file: ' + path);
            response.end('Error ' + path);
        } else {
            if (path.endsWith('.png')) {
                response.writeHead(200, {
                    'Content-Type': 'text/html',
                    'Content-Length': data.length
                });
                response.write(new Buffer(data).toString('base64'));
                response.end();
                console.log("Image Found");

            } else {
                response.writeHead(200, {
                    'Content-Type': 'text/html',
                    'Content-Length': data.length
                });
                response.write(data);
                response.end();
                console.log("File Found");
            }
        }
    });
}

我使用serveFile方法投放.png.glsl

好的,当我请求.glsl资源时,f.e。 http://localhost:8080/src/engine/glsl/shader.glsl

  xmlReq = new XMLHttpRequest();
    console.log(filePath);
    xmlReq.open('GET', 'http://localhost:8080/' + somePath, false);
    try {
        xmlReq.send();
    } catch (error) {
        alert('Error loading shader: ' + filePath);
        return null;
    }
    shaderSource = xmlReq.responseText;

一切正常,除了我应该做异步:p。

但是当我使用几乎完全相同的代码请求.png时:

function loadImage(file) {
    console.log('loading....');
    var xhr = new XMLHttpRequest();
    xhr.open("GET", 'http://localhost:8080/'+ file, false);

    try {
        xhr.send();
    } catch (error) {
        console.error(error);
    }
    var dataURL = "data:image/png;base64," + this.responseText;

    return dataURL;
}

我收到以下错误:

testGL.js:142 XMLHttpRequest cannot load http://localhost:8080/test/src_test/texture.png. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我不明白.glsl请求如何工作以及对图像的请求不会?我错过了什么?我怎么能解决它?

0 个答案:

没有答案