2012-02-24 5 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"과 함께 파일에 있음에도 불구하고 이것은'No Access-Control-Allow-Origin : * found' 메시지를 출력합니다. '. 이 라인을 잡기 위해 복잡한 정규 표현식을 만들 필요가 있는지 알려주십시오. –

관련 문제