问题
我存储用户的位置以在登录/登录后重定向它们。我仅存储request.xhr吗?是FALSE。
但是,request.xhr?在从某些终端启动rails服务器时触发FALSE,从其他终端启动rails服务器时触发TRUE。
这是在同一台机器上对相同代码的相同请求下发生的。为什么会这样?
我已经尝试
我曾尝试在同一台计算机上测试相同的请求,来自不同计算机的相同请求,并比较了几个不同的请求。
反复地看起来:
从Terminal或AWS Elastic Beanstalk启动Rails服务器时,request.xhr? == false
是我所期望的。
从iTerm或VSCode启动rails服务器时,request.xhr? == true
并不是我所期望的。
相关代码
我正在检查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
预期输出
预期:假 实际:正确
但仅适用于iTerm或VSCode
(或者我至少期望输出根据我使用的终端而不会有所不同)。