Pdf.js: Amazon URL이 ν¬ν•¨λœ μ•ˆμ „ν•˜μ§€ μ•Šμ€ 헀더 "Accept-Ranges" κ°€μ Έμ˜€κΈ° κ±°λΆ€

에 λ§Œλ“  2013λ…„ 04μ›” 24일  Β·  18μ½”λ©˜νŠΈ  Β·  좜처: mozilla/pdf.js

λ²”μœ„ μš”μ²­(pdf λ¬Έμ„œμ˜ 점진적 λ‘œλ“œ)κ³Ό ν•¨κ»˜ pdf.jsλ₯Ό μ‚¬μš©ν•˜λ €κ³  ν•˜μ§€λ§Œ amazon s3 URLμ—μ„œ pdfλ₯Ό λ‘œλ“œν•˜λ €κ³  ν•  λ•Œ 이 였λ₯˜κ°€ μ½˜μ†”μ— λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
μ•ˆμ „ν•˜μ§€ μ•Šμ€ 헀더 "Accept-Ranges" κ°€μ Έμ˜€κΈ°λ₯Ό κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.

pdfλŠ” 206개의 λΆ€λΆ„ μ½˜ν…μΈ (λ²”μœ„ μš”μ²­)λ₯Ό 톡해 λ‘œλ“œλ˜μ§€ μ•Šμ§€λ§Œ 200개 및 pdf λ‹€μš΄λ‘œλ“œκ°€ μ™„λ£Œλœ ν›„ λ·°μ–΄μ—μ„œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

이것은 pdf url의 μ˜ˆμž…λ‹ˆλ‹€.
https://kotob.s3.amazonaws.com/book.pdf?Signature=irgVfoAZuPPIp5kpCesni2MzpLo%3D&Expires=1366576877&AWSAccessKeyId=AKIAILBHXSTPUIBTRMSA

μ–΄λ–€ 도움

1-other

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

둜컬 μ„œλ²„μ—μ„œ 문제λ₯Ό μž¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 원격 PDFλ₯Ό ν˜ΈμŠ€νŒ…ν•˜λŠ” μ„œλ²„κ°€ λ‹€μŒ HTTP 헀더λ₯Ό λ°˜ν™˜ν•˜λ„λ‘ ν•˜μ—¬ μž‘λ™ν•˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.

Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Accept-Ranges, Content-Encoding, Content-Length, Content-Range

λͺ¨λ“  18 λŒ“κΈ€

viewer.html λ˜λŠ” νŒŒμ΄μ–΄ν­μŠ€ ν™•μž₯ ν”„λ‘œκ·Έλž¨μ—μ„œ 이것을 보고 κ³„μ‹­λ‹ˆκΉŒ?

Viewer.html μ‚¬μš©

ꡐ차 좜처 μš”μ²­μ„ ν•˜κ³  있기 λ•Œλ¬Έμ— 이것이 μ‹€νŒ¨ν•˜κ³  μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

Chrome이 μžˆλŠ” 경우 μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”.

--disable-web-security 둜 Chrome을 μ‹€ν–‰ν•©λ‹ˆλ‹€(http://stackoverflow.com/questions/3102819/chrome-disable-same-origin-policy). νŒŒμΌμ„ λ‘œλ“œν•  λ•Œ #disableWorker=true 도 μΆ”κ°€ν•©λ‹ˆλ‹€.

폐쇄. κ·Έλž˜λ„ λ¬Έμ œκ°€ 있으면 λ‹€μ‹œ μ—΄μ–΄μ£Όμ„Έμš”.

@mduan λ‹΅λ³€ κ°μ‚¬ν•©λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ λ™μΌν•œ 였λ₯˜κ°€ μ—¬μ „νžˆ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. 더 잘 μ„€λͺ…ν•˜κΈ° μœ„ν•΄ λ·°μ–΄λ₯Ό λ³΄κ΄€μš© 계정에 λ„£μ—ˆμŠ΅λ‹ˆλ‹€. 이것은 μ‹œλ„ν•  수 μžˆλŠ” 곡개 λ§ν¬μž…λ‹ˆλ‹€.
https://dl.dropboxusercontent.com/u/37262502/PDF.js_mduan/pdf.js/web/viewer.html
이 λ·°μ–΄λŠ” λ‹€μŒκ³Ό 같은 였λ₯˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
error

ν•˜μ§€λ§Œ λ‚΄κ°€ pdf 경둜λ₯Ό λ³€κ²½ν–ˆμ„ λ•Œ
DEFAULT_URL=' https://kotob.s3.amazonaws.com/neo.pdf '
μ—κ²Œ :
DEFAULT_URL='neo.pdf'
νŒŒμΌμ„ λ™μΌν•œ λ·°μ–΄ 디렉토리에 λ„£μœΌλ©΄ λ²”μœ„ μš”μ²­μ—μ„œ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

https://dl.dropboxusercontent.com/u/37262502/PDF.js_mduan/pdf.js/web/viewer2.html
get μš”μ²­μ— λŒ€ν•΄ λ‹€λ₯Έ λͺ¨λ“  μΆœμ²˜μ—μ„œ CORS 정책에 μ•‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
문제λ₯Ό μ„€λͺ…ν•˜λŠ” 데 도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€.
그리고 닡변이 λŠ¦μ–΄μ„œ μ£„μ†‘ν•©λ‹ˆλ‹€,

μ–΄λ–€ 도움이?

둜컬 μ„œλ²„μ—μ„œ 문제λ₯Ό μž¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 원격 PDFλ₯Ό ν˜ΈμŠ€νŒ…ν•˜λŠ” μ„œλ²„κ°€ λ‹€μŒ HTTP 헀더λ₯Ό λ°˜ν™˜ν•˜λ„λ‘ ν•˜μ—¬ μž‘λ™ν•˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.

Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Accept-Ranges, Content-Encoding, Content-Length, Content-Range

도움을 μ£Όμ‹  @mduan μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. ν˜„μž¬ μž‘λ™ μ€‘μž…λ‹ˆλ‹€.

@mahmoudfelfel : λ¬Έμ œκ°€ ν•΄κ²°λ˜λ©΄ 이 문제λ₯Ό μ’…λ£Œν•  수 μžˆμŠ΅λ‹ˆκΉŒ? κ°μ‚¬ν•©λ‹ˆλ‹€! :)

μŠ€ν¬λ¦½νŒ… μ–Έμ–΄(PHP, RoR, Python λ˜λŠ” 기타)의 ν”„λ‘μ‹œ νŒŒμΌμ€ 맀우 μ‰¬μš΄ μ†”λ£¨μ…˜μž…λ‹ˆλ‹€.

λ‚˜λŠ” 같은 였λ₯˜λ₯Ό μš°μ—°νžˆ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 그리고 제 생각에 이것은 pdf.js λ‚΄μ—μ„œ μˆ˜μ •λ  수/μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ λ„λ©”μΈμ—μ„œ pdfλ₯Ό λ‘œλ“œν•  λ•Œ 우리 도메인. μ‹€ν–‰ μ „ μš”μ²­μ€ ν•„μˆ˜μ΄λ©° AWS뿐만 μ•„λ‹ˆλΌ Mozilla λ¬Έμ„œ 와 κ΄€λ ¨ν•˜μ—¬ λͺ¨λ“  CORS μš”μ²­μ— λŒ€ν•΄ ꢌμž₯λ©λ‹ˆλ‹€.

그러면 μΆ”κ°€ ν”„λ‘μ‹œ μΈμŠ€ν„΄μŠ€ 등을 ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. λΉ λ₯Έ ν•΄κ²° λ°©λ²•μœΌλ‘œ pdf(ν”„λ¦¬ν”ŒλΌμ΄νŠΈ 포함) μš”μ²­μ„ κ°€μ Έμ˜€κ³  ByteArrayλ₯Ό pdf.js에 μ „λ‹¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ λ„λ©”μΈμ—μ„œ pdfλ₯Ό λ‘œλ“œν•  λ•Œ 우리 도메인. μ‹€ν–‰ μ „ μš”μ²­μ€ ν•„μˆ˜μ΄λ©° AWS뿐만 μ•„λ‹ˆλΌ Mozilla λ¬Έμ„œμ™€ κ΄€λ ¨ν•˜μ—¬ λͺ¨λ“  CORS μš”μ²­μ— λŒ€ν•΄ ꢌμž₯λ©λ‹ˆλ‹€.

CORS μ‹€ν–‰ μ „ μš”μ²­μ€ μ‚¬μš©μž JS κ°œμž… 없이 XHR에 μ˜ν•΄ μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€.

λΉ λ₯Έ ν•΄κ²° λ°©λ²•μœΌλ‘œ pdf(ν”„λ¦¬ν”ŒλΌμ΄νŠΈ 포함) μš”μ²­μ„ κ°€μ Έμ˜€κ³  ByteArrayλ₯Ό pdf.js에 μ „λ‹¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

μ™„λ²½ν•œ ν•΄κ²° λ°©λ²•μœΌλ‘œ λ“€λ¦½λ‹ˆλ‹€. λͺ¨λ“  λΉ„ν‘œμ€€ 톡신 μˆ˜λ‹¨(CORSκ°€ ν•„μš” μ—†λŠ” 일반 HTTP/HTTPS μ œμ™Έ)은 μ‚¬μš©μžκ°€ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. XHR이 URL(파일, blob, CORS 포함, 인증 헀더 포함 λ“±)을 κ°€μ§ˆ 수 μžˆλ‹€κ³  ν™•μ‹ ν•˜λŠ” 경우 μ μ ˆν•˜κ²Œ κ΅¬μ„±ν•˜μ‹­μ‹œμ˜€.

μ’…λ£Œν•˜λ©΄ ν•΄κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” v0.8.180 κ°‡ν˜€ 있고 이것이 였래된 λ¬Έμ œλΌλŠ” 것을 μ•Œκ³  μžˆμ§€λ§Œ λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ 도움이 λ˜λŠ” 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ λ‹€μŒ S3 버킷 CORS ꡬ성이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
        <ExposeHeader>Accept-Ranges</ExposeHeader>
        <ExposeHeader>Content-Range</ExposeHeader>
        <ExposeHeader>Content-Encoding</ExposeHeader>
        <ExposeHeader>Content-Length</ExposeHeader>
    </CORSRule>
</CORSConfiguration>

@jpillora S3 버킷 CORS κ΅¬μ„±μ—μ„œ λ™μΌν•œ ꡬ성을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. μ‘μš© ν”„λ‘œκ·Έλž¨μ€ λͺ¨λ“  λΈŒλΌμš°μ €μ—μ„œ μž‘λ™ν•˜λ©° FireFoxμ—λŠ” 였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. Webkit(Chrome/Safari)은 μ—¬μ „νžˆ Refused to get unsafe header "Accept-Ranges" λ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.

Accept-Ranges: bytes κ°€ pdf 파일 http μš”μ²­μ— μžˆλ‹€λŠ” 것을 μ•Œμ•˜μ§€λ§Œ Content-Range λ˜λŠ” Content-Encoding κ°€ κ΅¬μ„±μ—μ„œ http μš”μ²­μœΌλ‘œ μ§€μ†λ˜λŠ” 것을 λ³Ό 수 μ—†μŠ΅λ‹ˆλ‹€.

Content-Range 외에도 Rangeλ₯Ό λ…ΈμΆœν•΄μ•Ό ν•©λ‹ˆκΉŒ?

λ‚˜λŠ” 운 없이 그것을 λ˜μ‘Œλ‹€. λ¬Έμ œμ— νŽ€νŠΈν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.

μž‘λ™ν•˜λŠ” CORS ꡬ성은 https://github.com/mozilla/pdf.js/issues/4530#issuecomment -188059771μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

이 μž‘μ—…μ˜ 핡심은 Access-Control-Allow-Headers "λ²”μœ„"μž…λ‹ˆλ‹€.

제 κ²½μš°μ—λŠ” μ˜€λ””μ˜€ μ½˜ν…μΈ  슀트리밍의 경우 이 헀더가 μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

@simoncpu μ°Ύμ•„ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!
λ‚˜λŠ” 맀우 λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμ§€λ§Œ μ˜€λ””μ˜€ μ½˜ν…μΈ μ— λŒ€ν•œ κ²ƒμž…λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” μ΄λŸ¬ν•œ 헀더가 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

{ 'Content-Length': 5751405,
  'Content-Type': 'audio/mpeg',
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
  'Access-Control-Allow-Headers': 'Range',
  Expires: 0,
  Pragma: 'no-cache',
  'Cache-Control': 'no-cache, no-store, must-revalidate',
  'Accept-Ranges': 'bytes',
  'Content-Range': 'bytes 120429-240237/5751405' }

SF μ—μ„œλ„ λ¬Όμ—ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰

κ΄€λ ¨ 문제

zerr0s picture zerr0s  Β·  3μ½”λ©˜νŠΈ

dmisdm picture dmisdm  Β·  3μ½”λ©˜νŠΈ

AlexP3 picture AlexP3  Β·  3μ½”λ©˜νŠΈ

timvandermeij picture timvandermeij  Β·  4μ½”λ©˜νŠΈ

sujit-baniya picture sujit-baniya  Β·  3μ½”λ©˜νŠΈ