request.xhr?从VSCode和ITerm启动服务器时是否触发true,但在Terminal或Beanstalk上启动服务器时是否触发?

时间:2019-07-08 02:34:41

标签: ruby-on-rails terminal devise routing xmlhttprequest

问题

我存储用户的位置以在登录/登录后重定向它们。我仅存储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

(或者我至少期望输出根据我使用的终端而不会有所不同)。

0 个答案:

没有答案