1

我正在开发一个带有 dashcode 的 iPhone 网络应用程序。当我使用 iphone 模拟器浏览它时,我的应用程序运行良好。当我将它部署到 Web 服务器时,我从未收到 XMLHttpRequests 的响应。这是我使用的代码:

function get(feedURL, handler) {
    var onloadHandler = function() { handler(xmlRequest); };    
    var xmlRequest = new XMLHttpRequest();
    xmlRequest.onload = onloadHandler;
    xmlRequest.open("GET", feedURL);
    var credentials = encodeBase64(_login.username + ':' + _login.password);
    xmlRequest.setRequestHeader("Authorization", "Basic " + credentials);
    xmlRequest.send();
}

当我附加一个 onreadystatechange 处理程序时,我可以看到请求进入状态 4。我还可以在我的服务器日志中看到请求。我还添加了一个“无缓存”请求标头,但没有帮助。我在我拥有的托管包上的本地网络服务器上尝试了这个,但我没有任何运气让它工作。

4

3 回答 3

2

在黑暗中拍摄,但苹果文档这样说。

URL 请求目标的域必须与提供包含脚本的页面的域相同。不幸的是,这意味着客户端脚本无法从其他来源获取 Web 服务数据,并将该数据混合到页面中。一切都必须来自同一个域。在这些情况下,您不必担心安全警报会吓到您的用户。

status 和 statusText 的值是什么?还可以尝试 getAllResponseHeaders() 了解更多信息。

此外,如果它只是您想要的基本身份验证,您可以像这样将它传递给 open() :

open("method", "URL", asyncFlag, "userName", "password")
于 2009-09-18T19:48:45.053 回答
1

iPhone 可能不希望收到 Basic Auth 标头,因为您手动设置了请求标头。尝试将用户名和密码添加到 URL(在百分比编码之后)并以这种方式运行请求。

于 2009-09-16T07:22:43.873 回答
0

或许可以试试 DashCode 3.0 中的新调试功能(Snow Leopard 的新功能)?不是真正的答案,但也许换个环境——或新的调试器——会动摇一些东西。

于 2009-08-30T16:10:57.440 回答