8

我一般在 javascript 和 web 开发方面缺乏经验。我正在进行的项目是一般公司培训计划的一部分。我们已被指示使用 Google Chrome 作为主要测试浏览器。

本质上,我正在编写一个将在公司内部网外部的客户端上运行的应用程序。连接将通过我们的单点登录服务器传递到内部服务。单点登录服务对服务器端应用程序几乎是透明的——它拦截对内部服务的请求,并在必要时提示输入凭据。据我所知,它会在每次发送请求期间更改会话 cookie。

我已经使用 HTTP GET 和 POST 连接建立了到服务的连接。但是,有一项服务需要 HTTP PUT 请求。这就是麻烦出现的地方。

运行脚本时,Chrome javascript 控制台会给出以下错误:

Uncaught NetworkError: A network error occurred.

错误是如此模糊。当我查看 Chrome 开发人员选项卡中的网络选项卡时,它显示了请求,但没有任何响应数据。

出于好奇,我右键单击该请求并将其复制为 cURL 请求。我通过 -b 标志将会话 cookie 附加到请求中。cURL 返回 HTTP 302,并引用服务器上的 make cookie 脚本。作为 PUT 请求,任何重定向都不会导致请求失败吗?但我不肯定这就是 Chrome/js 中正在发生的事情。

有没有办法获得有关错误的更多信息?

我对开发内部服务供我们使用的团队不是 100% 有信心,所以使用 PUT 请求确实是不可能的……服务也在开发中。

需要明确的是,总体问题是,如果可能的话,我需要这个 PUT 请求才能通过我们的 SSO 应用程序。

4

1 回答 1

12

我遇到了同样的问题。它似乎只发生在重定向响应上。如果您将异步标志设置为 false 并使用回调函数,那么错误就会消失。例如:

xmlhttp.open("GET","http://google.com", false);

然后你需要一个这样的函数来监听响应:

xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    // do stuff here
  }
}
于 2013-11-13T06:12:19.847 回答