옛날 브라우저도 Rails 6 서버에 접속할 수 있게 만들기.

Karoid·2020년 7월 13일
0

Rails 꿀팁

목록 보기
1/1


최근 Rails 6로 버전을 올리면서 이전에는 못 봤던 버그가 새로 생겼다. 바로 옛날 브라우저로 서버에 접속하려고 하면 다음 에러가 발생하는 것이다.

Mime::Type::InvalidMimeType - "utf-8" is not a valid MIME type:

버그 발생 원인

버그의 원인은 옛날 브라우저가 Accept의 내용으로 웹 표준에 맞지 않는 내용을 담고 있기 때문이었다. Mac OS의 El Capitan 버전을 쓰면서 크롬 브라우저 버젼을 올리지 않은 사람들에게 이런 버그가 발생했다.

문제는 웹 표준에 맞는 문자열을 판단하는 내용이 Rails 6에 프레임워크 내부에 그냥 정규표현식으로 박혀있었다.

문제 해결

적은 수라도 옛날 브라우저를 쓰는 사람도 접속시키고 싶었기 때문에 해당 코드 부분을 오버라이딩 하기로 했다.

config/initializer 내부에 mime_types.rb 파일에 다음 코드를 추가했다.

module Mime
  class Type
    def initialize(string, symbol = nil, synonyms = [])
      # unless MIME_REGEXP.match?(string)
      #   raise InvalidMimeType, "#{string.inspect} is not a valid MIME type"
      # end
      @symbol, @synonyms = symbol, synonyms
      @string = string
      @hash = [@string, @synonyms, @symbol].hash
    end
  end
end

이제 더 이상 요청 헤더가 웹 표준에 맞지 않더라도 에러가 발생하지는 않는다.

profile
Backend. Rails, MongoDB 강좌를 운영하고 있습니다

0개의 댓글