ПРОБЛЕМА
Я храню местоположения Пользователя, чтобы перенаправлять их после регистрации / входа. Я сохраняю местоположения только в случае request.xhr?ЛОЖЬ.
Однако request.xhr?запускает FALSE при запуске сервера rails с некоторых терминалов и TRUE при запуске сервера rails с некоторых других терминалов.
Это происходит при одинаковых запросах одного и того же кода на одной машине.Почему это происходит?
Я ПОПРОБОВАЛ
Я пытался протестировать одни и те же запросы на одной и той же машине, одни и те же запросы на разных машинах и сравнилнесколько разных запросов.
Неоднократно кажется, что:
Когда сервер rails запускается из терминала или AWS Elastic Beanstalk, request.xhr? == false
, что я и ожидаю.
Когдасервер rails запускается из iTerm или VSCode, request.xhr? == true
, что не соответствует ожиданиям.
RELEVANT CODE
Я проверяю XHR и сохраняю местоположения запросовв app / controllers / application_controller.rb:
class ApplicationController < ActionController::Base
...
before_action :store_user_location!, if: :storable_location?
...
private
def storable_location?
puts request.fullpath
puts "CHECKING XHR"
puts request.xhr? # this is the line that gives differing outputs
request.get? && is_navigational_format? && !devise_controller? && !request.xhr? && !is_a?(::CertificationsController)&& !is_a?(::MainController)
end
def store_user_location!
# :user is the scope we are authenticating
store_location_for(:user, request.fullpath)
end
ОЖИДАЕМЫЙ ВЫХОД
Ожидаемый: false Фактический: true
Но только на iTerm или VSCode
(или, по крайней мере, я ожидаю, что выходы не будут отличаться в зависимости от используемого терминала).