【问题标题】:How do you send raw headers in ruby您如何在 ruby​​ 中发送原始标头
【发布时间】:2010-11-06 19:21:56
【问题描述】:

我有一个使用 UTF-8 字符集的页面,但是页面上的字符被破坏了,我认为这只是设置标题“Content-Type: text/html; charset=utf-8”的问题" ...我知道如何在 PHP 中执行此操作,只需将以下内容放在页面顶部即可。

<?php header("Content-Type: text/html; charset=utf-8"); ?>

有没有办法在红宝石中做到这一点?可以像这样在页面顶部放置页眉吗?


更新: 太平洋标准时间 6 月 29 日下午 1:20

将它用作 Rails 应用程序的一部分。它适用于独立应用程序中的嵌入式浏览器页面,我可以使用 Javascript 和/或 Ruby 来创建动态页面。

【问题讨论】:

  • 请解释您是如何生成网页的。你在用cgi模块吗?它是 Rails 应用程序的一部分吗?
  • 对不起,我们帮不了你。您能否发布一段代码,以便我们查看内容是如何生成的?

标签: ruby http-headers content-type


【解决方案1】:

你在使用 Ruby on Rails 吗?

request.headers["Content-Type"] # => "text/plain"

或者也许是 Ruby 的 CGI 库?

http://www.ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI.html#M000098

【讨论】:

  • 想使用 Ruby 的 CGI ... ruby​​ 有现成的,还是我需要下载一些东西?
  • 它自带ruby,但是你需要require它。
【解决方案2】:

如果您使用的是 Rails,您希望:

response.content_type = Mime::HTML
response.charset      = "utf-8"

您也可以尝试直接设置标题:

response.headers["Content-Type"] = "text/html; charset=utf-8"

如果您使用的是 Rack,您希望使用元组的第二个元素设置标题:

class MyRackApp
  def call(env)
    response = []
    # do stuff with env, populating response
    # response is [status_code, headers, body]
    response[1]["Content-Type"] = "text/html; charset=utf-8"
    response
  end
end

如果您使用的是原始 CGI(我肯定会推荐 Rack 而不是 cgi.rb):

header("text/html; charset=utf-8")

【讨论】:

  • 感谢三观。我使用了“cgi”库。 (这是快-n-脏)
【解决方案3】:

如果不了解更多有关如何生成页面的信息,我不确定如何直接回答这个问题,但我可能建议您研究一些用于 Ruby 的轻量级非 Rails Web 框架。有很多,它们使这样的事情变得容易。

例如,Rack 有一个易于使用的散列,供标头发送到浏览器。同样在Camping 中,您可以执行类似@headers['Content-Type'] = 'text/css' 的操作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多