gpt4 book ai didi

cordova - PhoneGap/Cordova 的网络 worker 是否允许 XHR?

转载 作者:行者123 更新时间:2023-12-04 02:52:03 26 4
gpt4 key购买 nike

环境:Cordova 2.9.0,iOS(Xcode 4.6.3 iPad 6.1 模拟器和运行 iOS 6.1.3 的 iPad 3)

我正在尝试将另一个文件加载到 web-worker 的过程分开。我正在加载的文件是应用程序的一部分(意味着它在同一个域中)。

以下代码在不在 web-worker 中运行时工作正常:(url 的格式为“/db/file.json”)

function loadXMLDoc(url, successCallback) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && (xmlhttp.status==200 || xmlhttp.status == 0)) {
successCallback(xmlhttp.responseText);
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}

注意:使用 cordova 时,status 始终为 0。不使用 cordova 时,status 为 200。

当我将此代码分离到网络 worker 中时,responseText 返回为空。

我删除了 phoneGap 并验证了上面的代码在有和没有 web-worker 的情况下都能正常工作。

是否可以在 phoneGap/cordova 的 web-worker 中使用 XHR?

最佳答案

您可能需要检查您的服务器是否正确支持跨源资源共享。有一些方便的资源,例如 CORS Enabled , 由 W3C。

当你在没有 Cordova 的情况下运行它时,你可能实际上是从服务器加载页面,例如 http://www.myserver.com/index.html,但是当你运行它时从 Cordova,您实际上正在运行 file:///somedirectory/www/index.html。这意味着如果您尝试使用 ajax 请求访问来自 myserver.com 的信息,它位于不同的域中,如果设置不当,浏览器将拒绝响应。

您可以做的最重要的事情是启用跨源资源共享。这需要添加一个新的 header Access-Control-Allow-Origin 其值为 *

关于cordova - PhoneGap/Cordova 的网络 worker 是否允许 XHR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17496239/

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