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

标签 javascript jquery ruby-on-rails ajax

我已经ajaxified了我的一些 View ,但由于某种原因它没有保留https并尝试重定向到http。我有以下代码:

$(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
});

如您所见,我提供了 URL,但它仍然阻止请求,因为它被重定向到 http,这是自 XSS 以来不允许的。

谢谢

编辑:显然 #{eligibility_check_result_phone_details_url} 由于某种原因返回 http:,而所有其他 URL 均为 https:

最佳答案

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

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

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

class SomeController < ApplicationController
  force_ssl if: :ssl_configured?

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

关于javascript - Ajax 请求不保留 Rails 中提供的完整 URL(协议(protocol)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428158/

相关文章:

JavaScript .addEventListener

javascript - 通过 jquery 在 SVG 中插入 <g> 标签

javascript - 在矩形中找到光标的位置

javascript - 如何在文本区域显示来自服务器的数据

ruby-on-rails - 我如何才能在 Windows 上安装 curb?

javascript - 使用 CSS 绘制框架的 Angular 时无法正确旋转图像

jquery - 使用 phonegap 的 pagecreate 事件加载页面时出现问题

javascript - jquery中根据输入框设置cookie

html - 在 (i18n) yml 中插入 HTML 特殊字符

ruby-on-rails - 在 flash 通知 rails Controller 中添加换行符