每当任何HTTP方法上存在301永久重定向响应时,dojo都会发出GET请求

问题描述

| 我的Web应用程序的工作方式如下: / abc / xyz:响应301永久重定向位置:/ abc / xyz / / abc / xyz /:基于请求的HTTP方法的适当响应 现在,当我发出如下请求时:
dojo.xhr(\'PUT\',{url : \"/abc/xyz\"})
以下操作顺序自动发生: 已发送PUT请求 收到301永久重定向 GET请求发送到新的URL / abc / xyz / 我不明白为什么会这样。我不希望dojo.xhr这么聪明。我希望它只停留在301永久重定向响应上,让我关注如何处理永久重定向在这种情况下,我希望更新URL并发送新的PUT请求。所有其他HTTP方法(例如OPTIONS等)的情况也相同。我在上面使用PUT作为示例。 是否可以将dojo.xhr配置为具有这种行为?     

解决方法

如果您确实不需要遵循301,则可以在服务器端创建一个网关,该网关返回一条通知,告知您收到了301,而不是遵循它。 为此,可以使用PHP和curl。参见http://php.net/manual/en/ref.curl.php 注释中有一个get_url函数     ,这是除IE之外的所有浏览器中的已知问题(Firefox的管道中已修复)。 同时,如果您确实需要浏览器正确遵循PUT重定向,则需要使用状态码307。 另请参见http://trac.tools.ietf.org/wg/httpbis/trac/ticket/160和http://trac.tools.ietf.org/wg/httpbis/trac/ticket/312