Ajax请求不保留Rails中提供的完整URL(协议)

时间:2017-09-26 13:41:53

标签: javascript jquery ruby-on-rails ajax

我已对某些观点进行了调整,但出于某种原因,它不会保留room_type并尝试重定向到https。我有以下代码:

http

正如您所看到的那样,我提供了URL,但它仍然会阻止请求,因为它被重定向到$(function() { var polling_url = "#{eligibility_check_polling_phone_details_url}"; var redirect_url = "#{eligibility_check_result_phone_details_url}"; var checkResult = function() { $.getJSON(polling_url, function(result) { if(result.complete) location.href = redirect_url; else setTimeout(checkResult, 2000); }); }; // some more stuff }); ,这是自XSS以来不允许的。

由于

修改:显然http因某种原因返回#{eligibility_check_result_phone_details_url},而所有其他网址均为http:

1 个答案:

答案 0 :(得分:0)

根据您的评论,由于console.log('redirect_url')会返回http链接,您所要做的就是用Javascript替换协议:

var https_redirect_url  = redirect_url.replace("http", "https");
if(result.complete) location.href = https_redirect_url;

如果Rails执行重定向,您会在服务器日志中看到重定向。

如果您希望所有路线/帮助者都是https,可以将其添加到routes.rb

default_url_options protocol: :https

此外,如果您只想将某些控制器限制为https,则可以在控制器/命名空间级别执行此操作:

class SomeController < ApplicationController
  force_ssl if: :ssl_configured?

  def ssl_configured?
    !Rails.env.development?
  end
end