2012-02-24 7 views
0

レスポンスボディを持つHTTPリクエストレスポンスヘッダを持つテキストファイルを生成しました。 Access-Control-Allow-Origin: *をヘッダーとして含む応答ヘッダーを探して、このファイル内を検索したいとします。私は、このテキストファイルを検索し、使用してリクエスト・レスポンスヘッダの上にカスタムメッセージを印刷することができますどのようにRubyを使ってテキストファイル内の完全に一致する文字列を検索する方法は?

-> "Access-Control-Allow-Origin: *\r\n" 

を:

ファイルが->で始まり、このような"で終わる行の形でこれを含んでいますif状態?

複雑な正規表現が必要ですか?

私のコードでは、私は正しい検索を取得することはできません。

require 'net/http' 
require 'uri' 
require 'IPAddr' 
require 'timeout' 

puts "Origin IP:\n\n" 
originip = gets() 
puts "Start IP:\n\n" 
startip = gets() 
puts "End IP:\n\n" 
endip = gets() 
(IPAddr.new("#{startip}")..IPAddr.new("#{endip}")).each do |address| 
    begin 
    uri = URI("http://#{address.to_s}") 
    http = Net::HTTP.new(uri.host, uri.port) 
    http.set_debug_output($stdout) 
    request = Net::HTTP::Get.new(uri.request_uri) 
    request.initialize_http_header({"Origin" => "#{originip}"}) 
    response = http.request request 
    $stdout.reopen('Access-Control-Allow-Origin.txt','a') 
    f = File.Open('Access-Control-Allow-Origin.txt') 
    line = f.read 
    if line = /Access-Control-Allow-Origin: */ then 
    puts "\n\nAccess-Control-Allow-Origin: * Header Found:\n\n" 
    else 
    puts "\n\nAccess-Control-Allow-Origin: * Header Not Found:\n\n" 
    end 
rescue Timeout::Error => exc 
    puts "ERROR: #{exc.message}" 
rescue Errno::ETIMEDOUT => exc 
    puts "ERROR: #{exc.message}" 
rescue Exception => exc 
    puts "ERROR: #{exc.message}" 
end 
end 
+0

複雑な正規表現が必要なのはなぜですか? –

答えて

1

あなたの文は、間違った演算子を使用している場合。

if line =~ /Access-Control-Allow-Origin: */ 
+0

'=〜'演算子は、 '' foo '=〜/ o /#=> 1'と '/ o/=〜 'foo'#=> 1'を"後方に "持っていません。 –

+0

ありがとうございます。私は矯正され、教育を受けています。答えを修正する。 –

+0

これは私のために働いていません。ヘッダーはファイル ' - >" Access-Control-Allow-Origin:* \ r \ n " '。この行をキャッチするために複雑な正規表現を作成する必要がある場合は教えてください –

関連する問題