为什么我的 HTTP Origin 标头与 request.base_url 不匹配以及如何修复?

2023-11-24

你好,这是我在这里的第一篇文章!

我已经尝试调试这个问题几天了,但无法弄清楚。 当我向 Rails api 发出发布请求时,我收到了以前从未见过的错误:

Started POST "/owners" for ::1 at 2021-01-12 11:24:15 -0500
   (1.0ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by OwnersController#create as */*
  Parameters: {"email"=>"adam", "password"=>"[FILTERED]", "owner"=>{"email"=>"adam"}}
HTTP Origin header (http://localhost:3000) didn't match request.base_url (http://localhost:3001)
Completed 422 Unprocessable Entity in 0ms (ActiveRecord: 1.8ms | Allocations: 476)


  
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

就像我说的,我以前从未见过这种情况,我不知道我是如何造成它的。我没有使用代理服务器,我在这个项目中尝试的唯一可能搞砸的新事情是我安装了 devise gem,但决定不使用它并删除它。

我尝试过的事情:

确保我没有待处理的迁移:

检查我的路线:

Rails.application.routes.draw do
  resources :owners
  resources :dogs
  post 'login', to: 'sessions#create'
end

然后我认为这可能是一个cors问题:

require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module Backend
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.0

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.
    config.api_only = true

    config.middleware.insert_before 0, Rack::Cors do
      allow do
        origins '*'
        resource(
          '*',
          headers: :any,
          methods: [:get, :patch, :put, :delete, :post, :options, :head]
          )
      end
    end

  end
end

然后我尝试在谷歌上搜索有关无效真实性令牌和http原始标头的内容,但找不到有用的解决方案或我可以理解的解决方案。

(最后一点:我尝试将其从发布请求更改为获取请求,它有效,但发布会导致错误)

感谢您提前提供任何建议


就我而言,问题出在虚拟主机的 Nginx 设置上。 在以下位置找到了答案:https://github.com/rails/rails/issues/22965#issuecomment-169956605

通过在 Nginx 中添加更多标头(X-Forwarded-Ssl on、X-Forwarded-Port 443 和 X-Forwarded-Host 主机名)进行修复

这是编辑后该部分的样子:

    location @app {
      proxy_pass http://app;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto https;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header Host $http_host;
      proxy_redirect off;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 HTTP Origin 标头与 request.base_url 不匹配以及如何修复? 的相关文章

  • 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

    有没有人解决这个问题Ruby 2 7 0 I used rbenv并安装了 Ruby v2 7 0 然后使用创建了一个 Rails 项目Rails v6 0 2 1 目前 通过运行之一 rails s rails s u puma rail
  • 是否可以修改 $_SESSION 变量?

    恶意用户是否可以将 SESSION 在 php 中 变量设置为他想要的任何值 很大程度上取决于您的代码 有一点非常明显 SESSION username REQUEST username
  • 通过使用 Minitest 的 Rails,如何设置 RuboCop 在每次使用 rake 运行测试时自动运行?

    当我运行以下命令时 我想要RuboCop https github com bbatsov rubocop在测试运行之前检查我指定的应用程序目录 bundle exec rake test 我添加了以下任务lib tasks test ra
  • 从部分重定向回具有部分的同一页面后保留验证错误

    因此 我试图从我的表单中获取错误 该表单在我的 root path 中呈现为部分内容 在我尝试发布它但失败 或成功 后 我想重定向回 root path 但是 redirect to 决定不保存任何验证信息 想知道如何做到这一点 class
  • 由于浏览器设置的标头,Safari 拒绝重定向的 CORS 请求

    Summary Safari 拒绝一些涉及重定向的 CORS 请求 声称某些标头是不允许的 但该标头从来不是由脚本请求的 而是由浏览器添加的 所以我认为这应该不重要 Safari 的行为是一个错误吗 规格有问题吗 或者 事情变成这样是有原因
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • Ruby on Rails 3 - 为每个请求重新加载 lib 目录

    我正在为 Rails 3 应用程序创建一个新引擎 正如您所猜测的 该引擎位于我的应用程序的 lib 目录中 但是 我在开发它时遇到了一些问题 事实上 每次更改引擎中的某些内容时 我都需要重新启动服务器 有办法避免这种情况吗 我可以强制rai
  • Ruby 可选参数和多个参数

    我试图将方法的第一个参数设置为可选 后跟任意数量的参数 例如 def dothis value 0 args 我遇到的问题是 这似乎实际上不可能 当我打电话时dothis hey how are you good 我希望它将值设置为默认值
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • 为什么 rand() 总是返回相同的数字?

    我在用 兰特 200 在我的 Rails 应用程序中 当我在控制台中运行它时 它总是返回随机数 但如果我在应用程序行中使用它 index rand 200 索引总是相同的号码 为什么会这样以及如何克服这个问题 简单的伪随机数生成器实际上生成
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • 将 ruby​​ 类转换为模块比使用改进更好的方法?

    Module refine http ruby doc org core 2 0 0 Module html method i refine方法接受一个类和一个块并返回一个细化模块 所以我想我可以定义 class Class def inc
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • 多个客户端如何同时连接到服务器上的一个端口(例如 80)? [复制]

    这个问题在这里已经有答案了 我了解端口工作原理的基础知识 但是 我不明白的是多个客户端如何同时连接到端口 80 我知道每个客户端都有一个唯一的 对于他们的机器 端口 服务器是否从可用端口回复客户端 并简单地声明回复来自 80 这是如何运作的
  • 如何在服务调用后检查 rspec 中的数组更改?

    目标很简单 例如我们有一个数组 name ghost state rejected name donkey state rejected 运行服务调用后UpdateAllUsers 这会将所有用户更改为 accepted name ghos
  • 为什么 CloudFront 根据 Accept-Encoding 改变 CORS 标头响应?

    我正在尝试让 CORS 与 Amazon S3 CloudFront 一起正常工作 设置我的 CORS 配置后 它似乎可以正常工作 curl H Origin https app close io I https d4389n07pf8cq
  • 下载所有 gems 依赖项

    我想通过下载任何所需的文件并将它们带到另一台计算机来安装指南针没有互联网连接 我已经下载了指南针的源包 当我在未连接的计算机上运行 gem 时 它抱怨缺少依赖项 有什么解决办法吗 这正是我遇到的问题 经过一段时间的搜索后 我找到了一个可以使
  • 在 ActiveAdmin 或打印解决方案中动态更改分页

    我是 Activeadmin 和 Rails 的新手 我需要一些帮助 我有一个分页模型 我想允许用户更改分页值或完全禁用它 这样它就可以打印 到打印机 所有记录 或过滤后的记录 我知道我可以在 before filter 中使用 per p

随机推荐

  • 类型错误:db.collection 不是函数

    我正在尝试将数据发布到我在 mLab 上创建的数据库 但收到此错误 但我不知道出了什么问题 我还阅读了之前关于此主题提出的问题 但我无法解决我的错误 因为我是新来的 所以在这里我发布了我试图实现的代码 它取自本教程https medium
  • NHibernate 在二次更新中设置外键,而不是在初始插入时设置外键,违反了键列上的非空约束

    我对一个相当简单 我认为 的 NHibernate 用例有疑问 我有一个经典的父实体和子实体 如下所示 public class Parent public virtual int ParentId get set public virtu
  • 使用 Django 1.5 和 IPython 获取 NameError

    我正在运行 Django 1 5 1 Python 2 7 2 和 IPython 0 13 2 如果我在 Django 项目目录中执行 python manage py shell 则会收到以下错误 from django import
  • 为什么 List 不是 IEnumerable

    编辑 我很抱歉 最初的问题措辞含糊不清 我没有得到我正在寻找的答复 对于任何继承自类 Y 的类 X new List
  • 在C中使用宏定义数据结构

    我试图理解使用宏定义数据结构操作的概念 以下代码是使用 FreeBSD 中内置列表库的简单示例 在库中 所有操作都定义为宏 我也在其他几个库中看到了这种方法 我可以看到这有一些优点 例如 能够使用任何数据结构作为列表中的元素 但我不太明白这
  • ES6 - 在类中调用静态方法

    我有这个类 它对静态方法进行内部调用 export class GeneralHelper extends BaseHelper static is env return config get env name env static isP
  • 利用多核的单线程程序

    Java程序的单线程可以自动使用CPU上的多个核心吗 Java程序的单线程可以自动使用CPU上的多个核心吗 是和不是 单线程Java程序将使用多个线程 因为GC JMX 终结器和其他后台线程可以在不同的CPU 无论是CPU还是核心 中运行
  • Javascript:自己的键函数中的对象文字引用而不是“this”

    在作为该文字一部分的函数中引用对象文字是否有问题 它似乎工作得很好 但我想确保没有其他影响 这是我正在谈论的一个例子 代替 var obj key1 it key2 function return this key1 works alert
  • JQuery 获取以字符串“whatever-”开头的元素类名的其余部分

    我有 js 缓存名称以 whatever 开头的类 class whatever class whatever 但我现在想做的是获取名称的其余部分 例如 在 whatever 9 的情况下 我想获取 9 我不知道该怎么做 你能帮助我吗 Tr
  • 如何在Expression.Or中设置2个以上的Expression

    我想创建一个包含超过 3 4 个表达式的查询 或者 但是表达式 或者只是让我在其中添加两个表达式 if string IsNullOrEmpty keyword query Add Expression Or Expression Like
  • Div 高度不会调整以适应内容

    如何使 div 水平和垂直居中并调整高度以适应内容 fiddle 这是我的 html 代码 div class sprite div div class content span close span div class centered
  • 在Qt中添加自定义字体

    有没有办法向 Qt 添加自定义字体 例如 Console Font 如何 我们如何将其设置为文本编辑器 QPlainTextEdit QTextEdit 等 Thanks Qt 使用您的窗口系统作为字体提供程序 您可以使用以下命令找到所有可
  • 如何从discord.py 中的文本通道获取所有消息的数组?

    我有频道对象 并且我已经尝试过 mess channel history limit 200 but mess is a HistoryIterator对象并且其内不包含任何消息mess messages对象 大小 0 频道中有消息 所以不
  • 如何获取BitBucket分支url?

    我有一个 bitbucket 存储库 我知道我可以单击 操作 选项卡 然后单击 克隆 以获取存储库的 http url 现在 我在存储库中有多个分支 并且我计划使用 Jenkins CI 从特定分支进行构建 有没有办法获取我的存储库中特定分
  • 如何将 powerpivot 数据作为表格复制到 Excel 工作簿中?

    我在 powerpivot 中有已修改的数据 我想将其作为常规表 而不是数据透视表 放入工作簿中 我需要这个 以便我可以使用该表来运行同一工作簿中另一个工作表中的一些 vlookups 我找到了这个答案 link我将尝试进行总结 而不会进行
  • JQuery 数据表行高

    我有一个页面 人们可以输入名字 姓氏 电话 电子邮件和种族 然后单击 添加 它会在数据表中添加一个条目 问题是点击添加后表格显示如下 如何调整每行的高度以使其正确显示 这是我的表的 html 代码 div div
  • 如何更改 JSF 2.0 中的语言环境?

    在我的应用程序中 用户应该能够切换区域设置 用于在页面上呈现文本的语言 大量教程都在使用 FacesContext getCurrentInstance getViewRoot setLocale 例如 http www mkyong co
  • Ionic 启动器无法在 crosswalk-lite 上运行:无法启动活动 ComponentInfo

    我正在使用 crosswalk lite 启动 ionic 应用程序 但它无法在真实设备和 genymotion 上运行 ionic start myApp tabs npm install bower install ionic serv
  • 查找小于其右侧某个元素的每个元素

    我需要找到一个向量中小于其后的多个元素之一的元素 在循环中很容易做到 x some vector values for m 1 length x if any x m 1 end gt x m do such and such end en
  • 为什么我的 HTTP Origin 标头与 request.base_url 不匹配以及如何修复?

    你好 这是我在这里的第一篇文章 我已经尝试调试这个问题几天了 但无法弄清楚 当我向 Rails api 发出发布请求时 我收到了以前从未见过的错误 Started POST owners for 1 at 2021 01 12 11 24