【问题标题】:iPhone dashcode xmlhttprequest no responseiPhone dashcode xmlhttprequest 无响应
【发布时间】:2009-09-19 03:48:45
【问题描述】:

我正在开发一个带有 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。我还可以在我的服务器日志中看到这些请求。我还添加了一个“无缓存”请求标头,但没有帮助。我在我拥有的托管包上的本地网络服务器上尝试了这个,但我没有任何运气让它工作。

【问题讨论】:

  • 所以当readyState 到达4responseText 是一个空字符串?
  • 您是字母数字用户名和密码吗?我注意到使用标准 SDK 时 iPhone 在使用 Basic Auth 时有点不稳定。您是否尝试过使用user:password@host/path URL 而不是手动设置标题? XML 请求可能不打算处理它在响应中接收到的 Basic Auth 标头,并且没有返回任何内容。根据用户名和密码,您需要对它们进行百分比编码以将它们粘贴到 URL 中。
  • 当readyState达到4时,status和statusText的值是多少?也可以尝试 getAllResponseHeaders() 了解更多信息

标签: javascript iphone xmlhttprequest dashcode


【解决方案1】:

在黑暗中拍摄,但apple docs 这么说。

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

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

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

open("method", "URL", asyncFlag, "userName", "password")

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-11-19
        • 1970-01-01
        • 2012-06-04
        • 2011-05-27
        • 2012-01-17
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多