只要任何HTTP方法上有301永久重定向响应,dojo就会发出GET请求

只要任何HTTP方法上有301永久重定向响应,dojo就会发出GET请求,http,redirect,dojo,xmlhttprequest,Http,Redirect,Dojo,Xmlhttprequest,我的web应用程序的工作原理如下: dojo.xhr('PUT', {url : "/abc/xyz"}) /abc/xyz:response 301永久重定向位置:/abc/xyz/ /abc/xyz/:基于请求的HTTP方法的适当响应 现在,当我发出如下请求时: dojo.xhr('PUT', {url : "/abc/xyz"}) 以下一系列操作将自动执行: 发送PUT请求 接收到301永久重定向 GET请求被发送到新的URL/abc/xyz/ 我不明白为什么会这样。我不希望d

我的web应用程序的工作原理如下:

dojo.xhr('PUT', {url : "/abc/xyz"})
  • /abc/xyz:response 301永久重定向位置:/abc/xyz/
  • /abc/xyz/:基于请求的HTTP方法的适当响应
现在,当我发出如下请求时:

dojo.xhr('PUT', {url : "/abc/xyz"})
以下一系列操作将自动执行:

  • 发送PUT请求
  • 接收到301永久重定向
  • GET请求被发送到新的URL/abc/xyz/
我不明白为什么会这样。我不希望dojo.xhr这么聪明。我希望它停止301永久重定向响应,让我来处理永久重定向。在这种情况下,我更愿意更新url并发送一个新的PUT请求。所有其他HTTP方法(如选项等)的情况都是一样的。我在上面使用PUT作为示例


是否有任何选项可以将dojo.xhr配置为这样的行为

如果您真的不需要遵循301,您可以在服务器端创建一个网关,返回接收到301的通知,而不是遵循它

要使用PHP和curl实现这一点。看见
注释中有一个get_url函数,这是除IE之外的所有浏览器都存在的一个已知问题(Firefox的修复正在进行中)

同时,如果您确实需要浏览器正确执行PUT重定向,则需要使用状态代码307


另请参见和

我认为这是一个浏览器问题,而不是Dojo特有的问题。请看这个问题:10.3.2在@Frode中也提到了这一点,是的,你是对的。我也四处看看,这似乎就是原因。