我已经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/