首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript: XMLHttpRequest状态始终返回0

JavaScript: XMLHttpRequest状态始终返回0
EN

Stack Overflow用户
提问于 2018-07-12 23:00:13
回答 2查看 196关注 0票数 1

我想读取我的服务器上同一子域中的一个文件,并显示其内容。我在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 -07- 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

解决方案

在Content-Security-Policy部分,您可以看到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
EN

回答 2

Stack Overflow用户

发布于 2018-07-12 23:05:34

您是否尝试过注册"load“处理程序而不是

xhttp.onreadystatechange =您的函数

xhttp.addEventListener("load",你的函数);

票数 1
EN

Stack Overflow用户

发布于 2018-07-12 23:11:02

签入开发工具:

because it violates the following Content Security Policy directive: "connect-src 'none'".
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51308898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档