[svg] MarkDown에 SVG (GitHub에서 호스팅) 포함

MD ![Alt text](/path/to/img.jpg)또는 구문 중 하나를 사용하여 이미지를 MD에 배치 할 수 있다는 것을 알고 ![Alt text](/path/to/img.jpg "Optional title")있지만 코드가 GitHub에서 호스팅되는 SVG에 MD를 배치하는 데 어려움이 있습니다.

궁극적으로 rails3을 사용하고 내가 사용하고 있으므로, 지금 자주 모델을 변경 RailRoady을 모델의 스키마 다이어그램의 SVG를 생성합니다. 그 SVG를 ReadMe.md에 넣고 표시하고 싶습니다. SVG 파일을 로컬로 열면 작동하지만 어떻게 MD 파일에서 SVG를 렌더링하도록 브라우저를 가져 옵니까? 코드가 완성 될 때까지 역동적 인 것으로 가정하면 (아마도 절대로) SVG를 별도의 장소에 호스팅하는 것은 과도하게 보이며이를 달성하는 방법이 누락되었습니다.

내가 포함하는 것을 시도하고있는 SVG는 여기 GitHub의에 :https://github.com/specialorange/FDXCM/blob/master/Rails/fdxcm/doc/models_brief.svg

SVG 코드가 렌더링되지 않고 구문이 작동하는지 확인하기 위해 실제 이미지로 다음을 시도했습니다.

![Overview][1]
[1]: https://github.com/specialorange/FDXCM/blob/master/doc/controllers_brief.svg  "Overview"

<img src="https://raw.github.com/specialorange/FDXCM/master/doc/controllers_brief.svg">

![Alt text](https://raw.github.com/specialorange/FDXCM/master/doc/controllers_brief.svg)

[Google Doc](https://docs.google.com/drawings/d/1B95ajItJTAImL2WXISX0fkBLYk3nldea4Vm9eo-VyE4/edit) :

<img src="https://docs.google.com/drawings/pub?id=117XsJ1kDyaY-n8AdPS3_8jTgMyITqaoT3-ah_BSc9YQ&w=960&h=720">

<img src="https://raw.github.com/specialorange/FDXCM/master/doc/controllers_brief.svg">

<img src="https://docs.google.com/drawings/d/1B95ajItJTAImL2WXISX0fkBLYk3nldea4Vm9eo-VyE4/edit">

결과를 얻으려면 :

개요
1 : https://github.com/specialorange/FDXCM/blob/master/Rails/fdxcm/doc/controllers_brief.svg “개요”

대체 텍스트


Google 문서 :





답변

raw.github.com사용자가 파일의 내용을 볼 수 있도록 하는 것이 목적 이므로 텍스트 기반 파일의 경우 이는 특정 내용 유형의 경우 잘못된 헤더를 가져 와서 브라우저에서 오류가 발생하는 것을 의미합니다.

이 질문을 받았을 때 (2012 년) SVG가 작동하지 않았습니다. 그 이후 Github은 다양한 개선을 구현했습니다. 이제 (적어도 SVG의 경우) 올바른 Content-Type 헤더가 전송됩니다.

아래에 언급 된 모든 방법이 작동합니다.

아래 예를 만들기 위해 SVG 이미지를 질문 에서 github의 repo로 복사했습니다.

상대 경로를 사용하여 파일에 링크 (작동하지만 분명히 github.com / github.io에서만)

암호

![Alt text](./controllers_brief.svg)
<img src="./controllers_brief.svg">

결과

github.com의 실제 예제를 참조하십시오 .

RAW 파일에 연결

암호

![Alt text](https://raw.github.com/potherca-blog/StackOverflow/master/question.13808020.include-an-svg-hosted-on-github-in-markdown/controllers_brief.svg)
<img src="https://raw.github.com/potherca-blog/StackOverflow/master/question.13808020.include-an-svg-hosted-on-github-in-markdown/controllers_brief.svg">

결과

대체 텍스트

다음을 사용하여 RAW 파일에 연결 ?sanitize=true

암호

![Alt text](https://raw.github.com/potherca-blog/StackOverflow/master/question.13808020.include-an-svg-hosted-on-github-in-markdown/controllers_brief.svg?sanitize=true)
<img src="https://raw.github.com/potherca-blog/StackOverflow/master/question.13808020.include-an-svg-hosted-on-github-in-markdown/controllers_brief.svg?sanitize=true">

결과

대체 텍스트

github.io에서 호스팅되는 파일에 연결

암호

![Alt text](https://potherca-blog.github.io/StackOverflow/question.13808020.include-an-svg-hosted-on-github-in-markdown/controllers_brief.svg)
<img src="https://potherca-blog.github.io/StackOverflow/question.13808020.include-an-svg-hosted-on-github-in-markdown/controllers_brief.svg">

결과

대체 텍스트


도중에 발생한 변경 사항에 대한 의견 :

  • Github은 SVG를 Markdown 이미지 구문과 함께 사용할 수있는 기능을 구현했습니다. SVG 이미지가 삭제되고 올바른 HTTP 헤더가 표시됩니다. 와 같은 특정 태그 <script>는 제거됩니다.

    위생 처리 된 SVG를 보거나 다른 위치 (예 : http://github.com/의 repos에서 호스팅되지 않은 markdown 파일)에서이 효과를 얻으 ?sanitize=true려면 SVG의 원시 URL에 추가 하면됩니다.

  • 의견에서 AdamKatz 가 언급 한 바와 같이 github.io 이외의 소스를 사용하면 개인 정보 보호 및 보안 위험이 발생할 수 있습니다. 자세한 내용은 CiroSantilli 의 답변DavidChambers 의 답변 을 참조하십시오.

  • 이 문제를 해결하는 문제 는 2015 년 10 월 13 일 Github에서 시작되어 2017 년 8 월 31 일에 해결되었습니다.


답변

GitHub에 연락하여 github.io 호스팅 SVG가 더 이상 GitHub README에 표시되지 않는다고 말했습니다. 이 답장을 받았습니다.

교차 사이트 스크립팅 취약점으로 인해 GitHub.com에서 svg 이미지 렌더링을 비활성화해야했습니다.


답변

rawgit.com 은이 문제를 잘 해결합니다. 각 요청에 대해 GitHub에서 적절한 문서를 검색하고 결정적으로 올바른 Content-Type 헤더와 함께 제공합니다.


답변

작동합니다. 다음 패턴을 사용하여 SVG에 연결하십시오.

https://cdn.rawgit.com/<repo-owner>/<repo>/<branch>/path/to.svg

단점은 소유자를 하드 코딩하고 경로에 repo를 저장하는 것입니다. 즉, svg 중 하나의 이름이 바뀌면 svg가 중단됩니다.


답변

2017 업데이트

GitHub 개발자는 현재 다음을 조사하고 있습니다 : https://github.com/github/markup/issues/556#issuecomment-306103203

2014-12 업데이트 : GitHub는 이제 BLOB 쇼에서 SVG를 렌더링하므로 README 렌더링에서 렌더링하지 않는 이유는 없습니다.

또한 SVG에는 XSS 시도가 있지만 실행되지는 않습니다. https://raw.githubusercontent.com/cirosantilli/test/2144a93333be144152e8b0d4144b77b211afce63/svg.svg

SVG가 10 억 건의 웃음으로 Firefox 44 Freeze를 만들지 만 Chromium 48은 괜찮습니다 : https://github.com/cirosantilli/web-cheat/blob/master/svg-billion-laughs.svg

페타 언급 는 SVG가 내부에 있기 때문에 얼룩이 iframe좋습니다.

SVG 이미지를 제공하지 않는 GitHub의 이론적 근거

다음 질문은 일반적으로 SVG의 위험에 대해 묻습니다. /security/11384/exploits-or-other-security-risks-with-svg-upload


답변

img-tag에 대한 실제 예제가 있지만 이미지가 표시되지 않습니다. 내가 보는 차이점은 내용 유형입니다.

게시물에서 github 이미지를 확인했습니다 (연결 오류로 인해 Google 문서 이미지가 전혀로드되지 않습니다). github의 이미지는 content-type : text / plain으로 제공되며 브라우저에서 이미지로 렌더링되지 않습니다.

svg의 올바른 컨텐츠 유형 값은 image / svg + xml입니다. 따라서 svg 파일이 올바른 MIME 유형을 설정했는지 확인해야하지만 서버 문제입니다.

http://svg.tutorial.aptico.de/grafik_svg/dummy3.svg를 사용 하여 시도 하고 태그에 너비와 높이를 지정하는 것을 잊지 마십시오.


답변

이 사이트를 사용하십시오 : https://rawgit.com svg 파일에 권한 문제가 없으므로 저에게 효과적입니다. Rawgit FAQ
에서 언급했듯이 RawGit 은 github의 서비스가 아닙니다 .

RawGit은 GitHub와 관련이 없습니다. RawGit에 대한 도움을 요청하는 GitHub에 연락하지 마십시오

다음과 같이 필요한 svg의 URL을 입력하십시오.

https://github.com/sel-fish/redis-experiments/blob/master/dat/memDistrib-jemalloc-4.0.3.svg

그런 다음 URL을 표시하여 다음과 같이 표시 할 수 있습니다.

https://cdn.rawgit.com/sel-fish/redis-experiments/master/dat/memDistrib-jemalloc-4.0.3.svg