我知道有很多这样的问题,但我无法用提供的解决方案来解决我的问题。 首先,我有一个简单的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
请求如何工作以及对图像的请求不会?我错过了什么?我怎么能解决它?