【问题标题】:CORS + End of file reachedCORS + 到达文件结尾
【发布时间】:2018-04-07 10:01:16
【问题描述】:

我有一个生产环境(Rails 4.2 和 nginx),它已经运行了很长一段时间,没有进行任何修改。我通过 AJAX 从另一台服务器 B (www.myserver.com) 调用服务器 A 上的一个端点(例如 app.myserver.com/header)。

突然(从 4 月 5 日开始)服务器 A 随机启动(因此不是在每个请求上)抛出 end of file reached 错误。服务器 A 或 B 最近没有变化。

同时(因此每次发生错误时)浏览器(在服务器 B 上打开对服务器 A 执行 AJAX 调用的页面时)会引发标准 CORS 错误:

Failed to load https://app.myserver.com/header: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.myserver.com' is therefore not allowed access. The response had HTTP status code 500.

问题:知道到哪里寻找问题吗?

最让我困惑的是,它并没有始终如一地发生。

我希望错误出现在服务器 A 上,因为如果它是纯 CORS 错误,我只会在浏览器中看到,对吧?

顺便说一句。这是我在 Rails 应用程序中针对该端点的 CORS 设置: headers['Access-Control-Allow-Origin'] = 'https://www.myserver.com' headers['Access-Control-Allow-Methods'] = 'GET' headers['Access-Control-Allow-Credentials'] = 'true'

在请求成功的情况下,我确实会在浏览器中看到正确的标头。

我在想它是否与浏览器更新有关,该更新以某种方式改变了 CORS 的工作方式,但我在 Chrome 和 Firefox 中都复制了该错误,我会惊讶于它们都在全球范围内推送(我的用户也得到了错误)在同一天导致相同错误的更新。

【问题讨论】:

    标签: ruby-on-rails nginx


    【解决方案1】:

    我已经解决了这个问题,它确实在服务器 A 上,并且是由 another gem 抛出的 end of file reached 引起的,这是由于它使用了停止工作的 API。或者更确切地说,正在逐步淘汰,所以这就是为什么它有时有效有时无效的原因。

    解释为什么 CORS 发生在客户端:这是因为当应用程序抛出错误时,它会触发重定向到没有正确标题的错误页面。

    【讨论】:

      猜你喜欢
      • 2013-07-05
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 2021-09-01
      相关资源
      最近更新 更多