1

在对 D2L SDK 的 API 调用中,我得到“时间戳超出范围”和一个数字。文档说这是来自服务器和客户端之间的时间戳偏差。我在 Java SDK 中看到调用使用解释结果()来处理这个问题。如何从 javascript 执行此操作?

4

1 回答 1

1

从历史上看,D2L Javascript 客户端使用 JSONP 是为了在传统的“同源策略”所施加的限制范围内工作。不幸的是,使用这种技术不会让客户端请求者直接访问响应正文,而不是 HTTP 200/OK 结果。

D2L 最近对 Javascript 客户端库进行了改进,因此现在,如果您将调用 Javascript 托管在与 LMS 相同的域+端口上,则调用 Javascript 可以使用 AJAX 而不是 JSONP,并且应该能够处理非 200 结果,检测时间偏差,并进行相应调整。请注意,您的脚本必须托管在与 LMS 相同的域、相同的端口并使用相同的 HTTP 方案(HTTP 或 HTTPS)。因此,请确保您使用的是最新版本的 D2L Javascript 客户端库。

现在,在时钟偏差的特殊情况下(导致 403 响应),您可以将响应正文从 ajax/xmlhttprequest 传递给D2L.Util.calculateSkew()它,它会给您返回一个偏差值。然后当您调用D2L.ApplicationContext.createUserContext()or.createUserContextWithValues()时,采用可选参数(默认 0)来容纳时钟偏差值。

于 2013-02-12T14:01:03.893 回答