Javascript Axios删除请求中的重定向承诺使用DELETE而不是GET
我希望能够在Javascript Axios删除请求中的重定向承诺使用DELETE而不是GET,javascript,axios,Javascript,Axios,我希望能够在中使用window.location='/'。然后当原始请求是DELETE时,使用GET而不是DELETE的回调 我的意思是: axios.delete('/logoff') .then(() => { window.location = '/signin'; }) 您可能会认为,在成功的删除请求之后,重定向到/signin的请求将作为获取执行-但是,它作为删除执行,就好像选项是粘性的一样。结果表明问题出在我的服务器端身份验证系统中,而不是客户端 我认为
中使用window.location='/'
。然后当原始请求是DELETE
时,使用GET
而不是DELETE
的回调
我的意思是:
axios.delete('/logoff')
.then(() => {
window.location = '/signin';
})
您可能会认为,在成功的删除
请求之后,重定向到/signin
的请求将作为获取
执行-但是,它作为删除
执行,就好像选项是粘性的一样。结果表明问题出在我的服务器端身份验证系统中,而不是客户端
我认为这对任何不使用Desive for Rails和基于AJAX的客户端注销调用的人来说都不会是一个问题
我的解决方案是修改Desive的配置,使用GET
而不是DELETE
请求注销:
# config/initializers/devise.rb
...
# The default HTTP method used to sign out a resource. Default is :delete.
config.sign_out_via = :get # this was changed from :delete to :get
现在,我的客户端注销调用正确地重定向到登录页面,因为注销HTTP方法和登录HTTP方法都是GET
我不建议使用GET进行注销。这可能是因为签出路由在路由文件中被覆盖。如果您发布相关的路由,这将非常有用。这是在Desive文档中装载路由的默认配置。这一定是Desive路由本身的一个问题,在Github上提出这个问题可能比在这里更好。