1

最后,我想捕获 302 错误并重定向到我的登录页面,但现在 xhr.status 的状态代码为 200。

这是我当前的代码:

parentSyncMethod = Backbone.sync
Backbone.sync = (method, model, options) ->
  old_error = options.old_error
  options.error = (xhr, text_status, error_thrown) ->
    if(xhr.status == 302)
      window.location.replace('http://localhost:8080/login')
    else
      old_error?(xhr, text_status, error_thrown)
  parentSyncMethod(method, model, options)

基本上我认为问题在于当前网页抛出 200 错误,但是抛出 302 的网页被包装并且没有传播到 xhr.status。有没有办法从所有已进行的 get、post、put 等调用中获取所有状态代码响应?

4

1 回答 1

5

302 响应代码由浏览器自动重定向,因此您将无法捕获该响应。您的处理程序只会在数据从重定向到的 URL 返回时运行。

我想说的是,您可能应该只返回 200 并让响应数据以自己的方式指示重定向,而不是在这里使用 302。

于 2012-04-20T16:02:52.727 回答