跨源资源共享CORS

294 阅读3分钟

图片来自Pexelsfauxels

Rails简化了许多耗费时间的任务,而这些任务是开发者过去花费时间和精力去解决的。这些简化的任务之一是由Rack CORS执行的。

Rack CORS 处理跨源资源共享(CORS),以便接受跨源 AJAX 请求。我怎么知道这个?因为 Rails 直接在位于你自动生成的 Rails 应用程序文件夹中的 config / initializers / cors.rb 内的 cors.rb 文件中做了这个注释。

# 当API从前端应用中被调用时,避免出现CORS问题。

# 处理跨源资源共享(CORS),以便接受跨源 AJAX 请求。

Rails还通过注释扩展了它的有用支持。

# 当你修改这个文件时,请确保重启你的服务器。

# 了解更多信息:https://github.com/cyu/rack-cors

建议的Github网站进一步解释说,Rack CORS是中间件,为Rack兼容的Web应用提供CORS支持。我已经说了CORS代表什么,但什么是Rack?Rack是一个网络服务器接口。根据维基百科的说法。

Rack是网络服务器和用Ruby编程语言开发的网络应用之间的一个模块化接口。通过Rack,网络框架和中间件的应用编程接口(API)被包装成一个处理HTTP请求和响应的单一方法调用。

Rack CORS,简单地说,允许兼容Rack的前端应用从你的Rails后端请求信息。你的数据存储在你的后端,所以当用户在前端应用上点击时,这些点击会向你的Rails后端发送获取请求以执行任务和收集数据。这个动作的特点是跨源,因为这个请求来自你的Rails后端不熟悉的实体。Rack CORS 允许这种请求发生,并让你控制谁可以提出请求以及可以提出什么样的请求。

例如,你可以允许一个请求看到一个名字的列表,但不允许一个请求在列表中添加一个名字。你也可以通过使用星号(*)来允许来自任何来源的任何资源的请求。

要在你的Rails后端实现Rack CORS,请在你的Gemfile中取消注释或添加以下内容。

gem 'rack-cors

运行 bundle update 来安装这个 gem。然后在你的 cors.rb 文件中,取消对 CORS 中间件的注释,并确保 origins 和 resource 有星号,如果你想允许所有请求。

这就是了!现在可以向你的Rails后端发出获取请求,给用户一个完整的互动体验。

因此,当你设计和建立你的Rails后端API时,请记住你的用户,并设置Rack CORS,以反映他们如何使用或接触你的数据。

关于Rack的文档可以在以下网站找到
:https://guides.rubyonrails.org/rails_on_rack.html

关于 CORS 的文档可以在以下网站找到:
developer.mozilla.org/en-US/docs/…


Rails Rack CORS最初发表在Nerd For Tech的Medium上,人们在这里通过强调和回应这个故事来继续对话。