【问题标题】:Rails: deleting a remote file [closed]Rails:删除远程文件[关闭]
【发布时间】:2014-04-06 19:08:55
【问题描述】:

我有两个 Rails 应用程序。如何从本地应用程序中删除远程应用程序上/public 中的文件?我意识到这个问题很模糊,只是不知道如何开始?

谢谢!

【问题讨论】:

  • 为什么不直接登录并删除文件?你想经常这样做吗?你在使用像 capistrano 这样的部署系统吗?
  • 远程应用程序存储可供下载的文件。如果应该删除本地应用程序上的主文件,我也希望删除远程应用程序上的相关文件。不使用 Capistrano。
  • 您如何托管应用程序?自托管或通过 Heroku 或什么?
  • 你真的应该将这些文件存储在应用程序空间之外,IMO。
  • 因为在应用文件空间中保留非应用工件只是麻烦。它可以防止琐碎的重新部署,这意味着您不能只是清除应用程序并重新开始等等。应用程序文件空间是开发人员而不是用户控制的地方。

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

试试这个

在您的控制器操作中

if File.exist?(file_path)
   File.delete(file_path)
end

更新

首先,您需要在 Rails 应用中允许 CORS 请求

在您的 application_controller.rb 中添加以下行

#application_controller.rb    
class ApplicationController < ActionController::Base

  before_filter :allow_cors_requests

  def allow_cors_requests
    headers["Access-Control-Allow-Origin"] = "*"
    headers["Access-Control-Allow-Methods"] = "GET, PUT, POST, DELETE" # In your case just use delete
    headers["Access-Control-Allow-Headers"] = "Content-Type, X-Requested-With, X-CSRF-Token, Origin Accept"
    head(:ok) if request.request_method == "OPTIONS"
  end

end

现在从您的控制器操作发出 ajax 请求以删除文件。

【讨论】:

  • 以前没有听说过 CORS 请求吗?谢谢你的建议。将进行调查。
  • @deep:这不会打开应用程序进行跨站点脚本攻击吗?
  • @noel 是的!您可以使用 Access-Control-Allow-Origin 指定受信任的来源。仅当源标头正确时才允许 CORS 请求。但这并不意味着您的应用程序是安全的,永远不要相信客户端请求,您仍然需要验证客户端发送的每个请求。实现跨域 ajax 请求的最佳方法是实现一些身份验证机制,在该机制中,您可以根据秘密令牌验证每个请求。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 2013-02-10
  • 2018-08-04
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多