gpt4 book ai didi

jquery - XMLHttpRequest 无法加载 http ://localhost:8080/exist/rest/db/. ... Access-Control-Allow-Origin 不允许 Origin null

转载 作者:行者123 更新时间:2023-12-03 22:51:35 25 4
gpt4 key购买 nike

我正在尝试使用对 eXist DB REST API(1) 的 ajax 调用来检索 XML 响应。

Google Chrome 向我提供了以下控制台错误:

XMLHttpRequest cannot load XMLHttpRequest cannot load http://localhost:8080/exist/rest/db/movies?_query=%2Fmovies. Origin null is not allowed by Access-Control-Allow-Origin Origin null is not allowed by Access-Control-Allow-Origin

虽然 Firefox 中的 Firebug 提供了以下控制台错误:

GET http://localhost:8080/exist/rest/db/movies?_query=%2Fmovies 200 OK X 35ms jquery.min.js(line 18)

这是代码的 ajax 部分:

$.ajax({
type: 'GET',
dataType: 'xml',
url: 'http://localhost:8080/exist/rest/db/movies',
data: {
_query: _query_value,
_key: _key_value,
_indent: _indent_value,
_encoding: _encoding_value,
_howmany: _howmany_value,
_start: _start_value,
_wrap: _wrap_value,
_source: _source_value,
_cache: _cache_value
},
success: function(resp){
alert("Resp OK!");
console.log(resp);
},
error: function(hqXHR, textStatus, errorThrown){
var x=0;
alert("fail0 " + hqXHR + " " + textStatus + " " + errorThrown);
}
});

我已经阅读了有关同一问题的一些相关问题,但我尝试过的任何解决方案都没有成功。

包含上述ajax代码段的index.html是从我的本地计算机访问的,如下所示:

file:///.../index.html

我尝试按如下方式执行 chrome:

chrome.exe --allow-file-access-from-files

此外,我尝试将该文件部署到在线主机,以便它位于

http://www.<somedomain>.com/index.html

我拥有的最接近的解决方案是将数据类型从 xml 更改为 jsonp。已收到响应,但由于预计它是 xml,因此我认为该错误与解析有关,Google Chrome 控制台返回以下语句:

Uncaught SyntaxError: Unexpected token <

和 Firebug 控制台:

XML can't be the whole program
[Break On This Error]
</exist:result>
movies...3302057 (line 528, col 15)

回到我的问题,如何通过 eXist DB 正确检索 xml 文档?我做错了什么?

期待您的帮助。我对网络开发还很陌生,并且没有什么想法。

提前致谢!

其他说明:

我正在使用的 jquery.min.js 位于 http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js

直接键入任何浏览器时,URI http://localhost:8080/exist/rest/db/movies?_query=%2Fmovies 即可工作。

引用:

(1) - http://www.exist-db.org/exist/devguide_rest.xml;jsessionid=e7096vtg4l7gmocouhe6zhle

更新(1) 看来我能够通过将 eXist DB 作为服务器运行来摆脱 CORS 问题,如下所示:bin/server.sh(在 UNIX 中)或 bin\server.bat(在 Windows 中)。

现在,我遇到了另一种类型的问题。我在使用 jquery.js 的 Google Chrome 控制台中收到以下错误:

GET http://localhost:8080/exist/rest/db/movies?_query=%2Fmovies  jquery.js:8240
jQuery.ajaxTransport.send jquery.js:8240
jQuery.extend.ajax jquery.js:7719
(anonymous function) index.html:43
jQuery.event.dispatch jquery.js:3332
jQuery.event.add.elemData.handle.eventHandle jquery.js:2941

并使用 jquery.min.js:

GET http://localhost:8080/exist/rest/db/movies?_query=%2Fmovies  jquery.min.js:18
f.support.ajax.f.ajaxTransport.send jquery.min.js:18
f.extend.ajax jquery.min.js:18
(anonymous function) index.html:43
f.event.handle jquery.min.js:17
f.event.add.i.handle.k jquery.min.js:16

这个错误是什么意思?我的代码的哪一部分做错了?

(2) 显然,更新 1 是我遇到的一个不必要的问题。服务器模式不适用于我的机器,这就是出现上述错误的原因。

最佳答案

这是一个跨域请求,是不允许的。从 localhost 而不是 file://进行测试。此外,远程服务器需要返回正确的 CORS header (如果要与 JSONP 以外的任何数据类型跨域工作)。 JSONP 数据类型不适用于返回 XML。

关于jquery - XMLHttpRequest 无法加载 http ://localhost:8080/exist/rest/db/. ... Access-Control-Allow-Origin 不允许 Origin null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10822514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com