如何在ruby中发送原始标头

时间:2009-06-29 19:58:06

标签: ruby http-headers content-type

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

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

有没有办法在红宝石中这样做?你可以在页面顶部放置一个标题吗?

<小时/> 更新: 6月29日,太平洋标准时间1:20p

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

3 个答案:

答案 0 :(得分:2)

您使用的是Ruby on Rails吗?

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

或者Ruby的CGI库?

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

答案 1 :(得分:1)

如果您正在使用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 over cgi.rb):

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

答案 2 :(得分:0)

我不确定如何在不了解您如何生成页面的情况下直接回答这个问题,但我建议您研究一些Ruby的轻量级非Rails Web框架。有许多,他们使这样的事情变得容易。

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

之类的操作