Ajax呼叫返回301突然永久移动

时间:2014-11-15 09:00:11

标签: php ajax json api http-status-code-301

下面的代码片段工作正常,但它没有明显原因突然停止

jQuery.ajax({
            url: "http://example.com/api/getstuff.php?Location="+location+"&token="+token,              
            type: 'GET',
            dataType: 'json',
            success:function(data){
            if(data.success == '0'){
                alert("success");
            }
            else
            {
            alert(data.error);
            }

        });

当我从检查员复制api的url并在浏览器中打开它工作正常时,它在开发和生产方面都运行良好。 任何想法?

*编辑 问题已得到解决,api呼叫缺少www,因此呼叫被重定向为使用www,因此301错误。

虽然这解决了问题,但我无法解释,因为这是很久以前使用的方式,突然它停止了工作!

无论如何我认为我应该发布修复程序,以便有人能找到有用的东西。

由于

2 个答案:

答案 0 :(得分:4)

当您尝试访问的资源或网址已被移动或重定向到另一个网址时,通常会发生此错误。

在这种情况下,来自Web服务器的响应始终包含备用URL。

更新您的代码以向此备用网址发送请求。

如果在响应中找不到备用URL,则Web服务器可能存在某些问题,或者在Web服务器端未正确设置URL重定向。

正如您所说,当您在浏览器中打开它时,同一个URL正在工作,请仔细记下实际显示的URL,因为如果从Web服务器收到301消息,浏览器可能会静默切换到替代URL。

答案 1 :(得分:1)

这是您的API还是第三方API?此状态代码表示此资源已永久移至新网址,无法再在此网址中访问。如果它不是您自己的API,则必须检查Location标头以获取新的资源位置。使用检查器检查此标题。

请注意,请看下面的RFC:

链接:http://tools.ietf.org/html/rfc7231#section-6.4.2

  

301永久移动

     

301(永久移动)状态代码表示目标      资源已被分配一个新的永久URI和任何未来      对此资源的引用应该使用其中一个附带的URI。      具有链接编辑功能的客户端应该自动重新链接      引用一个或多个新的有效请求URI      在可能的情况下,服务器发送的引用。

这部分讨论了Location头 - >

  

服务器应该在响应中生成Location头字段      包含新永久URI的首选URI引用。该      用户代理可以使用Location字段值进行自动      重定向。服务器的响应有效负载通常包含一个短消息      超文本注释,带有指向新URI的超链接。