【问题标题】:Ajax method starts returning 302 all of the suddenAjax 方法突然开始返回 302
【发布时间】:2013-02-05 21:59:07
【问题描述】:

我有一个 Sinatra 应用程序,其中有一个 ajax 方法。以前它返回 200 和结果。现在它开始返回 302 并且结果 仍然正确(我可以在 Google Chrome 调试控制台中看到)。

这里是 xaml 代码:

    :javascript
        $(document).ready(function() { 
            $(document).on("click", "#my_id", function(){
              $.ajax({
                type: "GET",
                url: "/my_url",
                success: function(data){
                  window.location = data;
                }
            });
          });
        });


   def my_url
    #getting a data.....
    #returning the data... there is nothing unusual
  end

更新: 我就是这样做的:

  def my_url
    result = get_result()
    response.headers['Location'] = request.referer
    result
  end

Response 中的Location 标头尚未更改,错误仍然存​​在。

【问题讨论】:

  • 响应中 Location 标头的值是多少?也许某些中间件正在重定向授权。
  • @Cixate,没错,响应中的位置等于我要重定向用户的 url。如果是这个问题,我该怎么办?
  • @AlanDert "没错,响应中的位置等于我要重定向用户的 url" - 为什么 你要重定向他们?原始代码说 302 是一个 problem 而你却说你 想要 重定向它们。现在您已经给出了一个更新,您更改了 Location 标头……实际上在这里发生了什么?
  • 302 不是错误,它是告诉浏览器您正在尝试将用户重定向到其他位置的状态代码。添加 Location 标头会自动将状态码设置为 302。

标签: javascript ruby ajax sinatra


【解决方案1】:

302 不是错误代码。这是您通过添加 Location 标头进行的重定向的 HTTP 状态代码。添加Location 标头会自动将状态代码更改为302。302 的唯一预期响应类型是不理解302 的浏览器会看到的内容。例如,一个 HTML 页面解释它是一个带有指向新页面的链接的重定向。对于 AJAX,302 不会有响应,浏览器将获取您重定向到的新位置的结果。

有关 HTTP 状态代码的更多详细信息,请参阅 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多