我想在同一子域中读取服务器上的文件并显示其内容。我在XMLHttpRequest asynchronous not working, always returns status 0上看到过类似的问题,除了在我的情况下,所有文件都在我的服务器上,并且在同一子域(甚至是同一目录)内,并且我不想劫持其他人的线程。
我的服务器上有三个文件:
counter.txt:
1234
loadfile.js:
function loadFile(filePath) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("output").innerHTML = this.responseText;
} else {
debug = 'readyState=' + this.readyState + '<br />status=' + this.status + '<br />responseText=' + this.responseText;
document.getElementById("output").innerHTML = debug;
}
};
xhttp.open("GET", filePath, true);
xhttp.send();
}
test.html(url):
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<script src="loadfile.js"></script>
</head>
<body onload="loadFile('counter.txt')">
<h1>XMLHttpRequest Test</h1>
<div id='output'></div>
</body>
</html>
输出始终为:
XMLHttpRequest Test
readyState=4
status=0
responseText=
有什么我想念的吗?
[编辑-2018年7月12日,20:07]
curl -I https://downloads.solydxk.com/.counters/counter.txt
返回此:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 12 Jul 2018 18:04:06 GMT
Content-Type: text/plain
Content-Length: 5
Last-Modified: Thu, 12 Jul 2018 12:27:35 GMT
Connection: keep-alive
ETag: "5b474937-5"
Referrer-Policy: strict-origin-when-cross-origin
Strict-Transport-Security: max-age=31536000 ; always
x-xss-protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-inline'; img-src 'self'; style-src 'none'; font-src 'none'; frame-src 'none'; frame-ancestors 'none'; connect-src 'none'; object-src 'none'; media-src 'none'; form-action 'none'; base-uri downloads.solydxk.com www.downloads.solydxk.com
X-Powered-By: PleskLin
Accept-Ranges: bytes
[解决方案]
在“内容安全策略”部分中,您看到connect-src设置为“ none”。当您能够更改服务器上的Apache设置时,请检查您域的标头配置是否正确。
就我而言,我必须将connect-src设置为“ self”。
使用Plesk维护服务器时: 网站和域>您的域> Apache和Nginx设置>其他标题>输入自定义值:
Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-inline'; img-src 'self'; style-src 'none'; font-src 'none'; frame-src 'none'; frame-ancestors 'none'; connect-src 'self'; object-src 'none'; media-src 'none'; form-action 'none'; base-uri $host www.$host
答案 0 :(得分:1)
您是否尝试过注册“加载”处理程序而不是
xhttp.onreadystatechange =您的功能
xhttp.addEventListener(“ load”,您的函数);
答案 1 :(得分:1)
检入开发工具:
because it violates the following Content Security Policy directive: "connect-src 'none'".