viewer.js๋ ์จ๋ผ์ธ PDF ์คํธ๋ฆผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก viewer.js์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
var kDefaultURL = 'compressed.tracemonkey-pldi-09.pdf';
์ด์ PDF ์คํธ๋ฆผ์ ์ฌ์ฉํ์ญ์์ค.
http://www.liferay.com/documents/31578/11925632/sample.pdf
~์ฒ๋ผ
var kDefaultURL = ' http://www.liferay.com/documents/31578/11925632/sample.pdf ';
FireFox 9.0.1 ๋ฐ Chrome 16.0.912.63์์๋ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"
PDF.JS ๋น๋: 9161c2e
๋ฉ์์ง: 0์ ์๊ธฐ์น ์์ ์๋ฒ ์๋ต์
๋๋ค.
".
๊ด๋ จ ๋ฌธ์ ๋ #522, #586 ๋ฐ #842์ ๋๋ค.
์ ๋ฌธ์ ์์ ์ธ๊ธํ๋ฏ์ด ์ด๊ฒ์ ์ฌ์ฉ์๊ฐ ํ๋ก์ ๋๋ CORS๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ค๋ก ์์ ํด์ผ ํ๋ ๊ฒ์ ๋๋ค.
์๋ ํ์ธ์ ๋ธ๋ ๋๋
"์ฌ์ฉ์๊ฐ ํ๋ก์ ๋๋ CORS๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ค๋ก ์์ ํด์ผ ํ๋" ์ฃผ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
PDF๊ฐ "http://"์ ๊ฐ์ ๋ก์ปฌ(์ ๋ก๋), ์๋ฒ๋ฅผ ํ์ผ๋ก, ์๋ฒ์์ ์คํธ๋ฆผ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
PDF ๋ฆฌ๋๋ ์ด๋ฏธ์ง URL๋ก HTTP URL์ ์ง์ํด์ผ ํฉ๋๋ค.
๊ฐ์ฌ ํด์
@jonasyuandotcom cors๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ์๋ฒ์์ http๋ฅผ ์ฌ์ฉํ์ฌ pdf๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ธ๋ผ์ฐ์ ๋ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ์๋ฒ๋ก ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ณด๋ด๋ ๊ฒ์ ๋ณดํธํฉ๋๋ค. ์ด๋ฌํ ์๋ฒ๋ http ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ ํ์ ์ฐํํด์ผ ํฉ๋๋ค.
์๋ฒ ์ธก ํ๋ก์๋ ๋ทฐ์ด์ ๋์ผํ ์๋ฒ์ ์์นํ๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค.
@notmasteryet ๊ฐ์ฌํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋์ผํ ์๋ฒ๋ฅผ ์ฌ์ฉํ ๋ ์๋ํฉ๋๋ค.
var kDefaultURL = '/pdf-reader-web/sample.pdf';
์๋ ์กฐ๋์ค,
๋ธ๋ผ์ฐ์ ๋ณด์ ์ ํ์ผ๋ก ์ธํด ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๊ตฌํํ์ง ์์ ๊ฒ์ ๋๋ค. http://en.wikipedia.org/wiki/XMLHttpRequest#Cross -domain_requests ์ฐธ์กฐ
๋ธ๋ ๋
์๋ ํ์ธ์ @brendandahl
2011๋ ์ดํ ์ ๋ฐ์ดํธ๊ฐ ์๋์ง ๊ถ๊ธํฉ๋๋ค. CORS ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์ฌ์ ํ ๋ถ๊ฐ๋ฅํฉ๋๊น?
์. ์์ธํ ๋ด์ฉ์ https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#faq -xhr์ ์ฐธ์กฐ
ํ ๊ฐ์ฌํฉ๋๋ค!
์๋ ํ์ธ์ @timvandermeij์ ๋๋ค. ์๋ตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ง์ ์๋ฃจ์ ์ ์๋ํ์ง๋ง ์ฌ์ ํ ๋ด ์น ์๋ฒ์์ CORS๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. git ์์ ๊ฐ ์์ต๋๊น?
@Dassine ์ฌ๊ธฐ http://mozilla.github.io/pdf.js/web/viewer.html?file=//async5.org/moz/pdfjs.pdf -- PDF ๋ทฐ์ด ๋ก๋ http://async5.org /moz/pdfjs.pdf . async5.org๋ mozilla.github.io๊ฐ ํ์ผ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ํ์ฉํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ ๋ณด์์์ ์ด์ ๋ก ์๊ฒฉ ํ์ผ ์ก์ธ์ค๋ฅผ ์ฐจ๋จํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์น์ ํ์ค ๊ดํ์ด๋ฉฐ ๋ธ๋ผ์ฐ์ ๋ณด์์ ์ฐํํ๊ธฐ ์ํด PDF.js๊ฐ ํ ์ ์๋ ์ผ์ ์์ต๋๋ค.
๋ฐ์คํฌํ/๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ธ๋ผ์ฐ์ ์ปจํธ๋กค์ ํฌํจํ๋ ๊ฒฝ์ฐ OS/Framework API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ Uint8Array๋ก PDF.js์ ์ ๋ฌํ ์ ์์ต๋๋ค.
๊ทํ์ ๋งํฌ์ ๋ํด @yurydelendik ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. PDF.js๊ฐ CORS๋ฅผ ๊ด๋ฆฌํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. @timvandermeij ๋ฐ ๊ธฐํ์์ ๋ณด๋ธ ์๋ฃจ์ ์ ์๋ํ์ง๋ง ์คํจํ์ต๋๋ค. pdf.js ์ ์ฅ์๊ฐ ๋ค์ด๋ก๋๋๋ฉด ์ฌ๋ฐ๋ฅธ ๊ตฌํ/์์ ์๋ฃจ์ ์ ์ฐพ๊ณ ์์ต๋๋ค. ๊ฐ์ฌ ํด์
@yurydelendik ๋ํ ์๊ฒฉ PDF ํ์ผ์ ๋ก๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ค๋ฅ๋ Chrome์์๋ง ๋ฐ์ํฉ๋๋ค.
PDF.js v1.0.1040(๋น๋: 997096f)
๋ฉ์์ง: PDF " http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal.pdf "๋ฅผ ๊ฒ์ํ๋ ๋์ ์๊ธฐ์น ์์ ์๋ฒ ์๋ต(0)์ด ๋ฐ์ํ์ต๋๋ค.
๋ด๊ฐ ๋ก๋ํ๋ ค๊ณ ํ๋ PDF๊ฐ ๋ด๊ฐ ์ ์ดํ ์ ์๋ ๋ค๋ฅธ ์๋ฒ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ ๋ด viewer.js์ ์ด PDF๋ฅผ ํ์ํ๊ณ ์ถ์ต๋๋ค.
CORS์ ๋ํ ๊ฒฝํ์ด ๋ง์ง ์์ง๋ง ์๋ฒ์ ์ต์ํ์ ๋ณด์ crossdomain.xml ํ์ผ์ ์์ฑํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
@hashbyte ์๋ฒ์ฉ ํ๋ก์๊ฐ ํ์ํฉ๋๋ค. ๋ด๊ฐ ๊ฐ๋ฐํ ๋งค์ฐ ๊ฐ๋จํ ํ๋ก์๋ CORS Anywhere์ ๋๋ค. PDF ํ์ผ์ URL ์์ ํ๋ก์์ URL์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์:
"https://cors-anywhere.herokuapp.com/" +
"http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal.pdf" =
"https://cors-anywhere.herokuapp.com/http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal.pdf"
๊ทธ๋ฐ ๋ค์ ์ด URL์ URL ์ธ์ฝ๋ฉํ๊ณ file
๋งค๊ฐ๋ณ์์ ๋ฃ์ผ๋ฉด ๋ชจ๋ ํ์ด์ง๋ฅผ ์ด ์ ์๋ ๋งํฌ๋ฅผ ์ป์ ์ ์์ต๋๋ค. https://mozilla.github.io/pdf.js/web/viewer.html ?file=https%3A%2F%2Fcors-anywhere.herokuapp.com%2Fhttp%3A%2F%2Fbhpr.hrsa.gov%2Fhealthworkforce%2Frnsurveys%2Frnsurveyfinal.pdf
์ฐธ๊ณ : PDF URL์ ํผ์ผํธ ๊ธฐํธ๋ &
๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ง ์์ ๊ฒฝ์ฐ ๋งํฌ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์ค๋ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋งํฌ ์์ ๋ทฐ์ด URL์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค(๋ฐ๋ผ์ ๋จผ์ URL ์ธ์ฝ๋ฉ ์์ด ). URL์ ์๋์ผ๋ก ์
๋ ฅํ๋ ๊ฒฝ์ฐ์๋ง ์ด ์์
์ ์ํํ์ญ์์ค(์: ๋น ๋ฅธ ํ
์คํธ๋ฅผ ์ํํ ๋):
https://mozilla.github.io/pdf.js/web/viewer.html?file=https://cors-anywhere.herokuapp.com/ http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal. PDF
์ฐธ๊ณ : CORS Anywhere ๋ฐ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ง ์ ๊ณต๋ฉ๋๋ค. ๋ฐฉ๋ฌธ์๊ฐ ๋ง์ ์ฌ์ดํธ์์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๊ณต๊ฐ ๋ฐ๋ชจ ์๋ฒ์ ๋ถ๋นํ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ์ง ์๋๋ก CORS Anywhere ์ธ์คํด์ค๋ฅผ ์ง์ ํธ์คํ
ํ์ญ์์ค. CORS Anywhere์ ์ฑ๋ฅ์ด ๋จ์ฉ์ผ๋ก ์ธํด ํฌ๋กค๋ง๋๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ฉด ๊ทํ์ ์ถ์ฒ๊ฐ ๋ธ๋๋ฆฌ์คํธ์ ์ฌ๋ผ๊ฐ๋๋ค. CORS Anywhere๋ฅผ ์ง์ ํธ์คํ
ํ ๋ originWhitelist
๊ตฌ์ฑ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด์๋ง ์ฌ์ดํธ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํ์ฌ ์ด๋ฌํ ๋จ์ฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์๋
ํ์ธ์,
์ธ๋ถ URL์์ pdf๋ฅผ ๋ก๋ํ๋ ค๊ณ ํ ๋ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ: ํ์ผ ์๋ณธ์ด ๋ทฐ์ด์ ์๋ณธ๊ณผ ์ผ์นํ์ง ์์ต๋๋ค.
throw new Error('ํ์ผ ์๋ณธ์ด ๋ทฐ์ด์ ์ผ์นํ์ง ์์ต๋๋ค.');
๋์์ฃผ์ธ์!
์ธ๋ถ URL์์ pdf๋ฅผ ๋ก๋ํ๋ ค๊ณ ํ ๋ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
@gildassamuel ์์ธํ ๋ด์ฉ์ #6916์ ์ฐธ์กฐํ์ธ์.
@jonasyuandotcom ํ์ผ์ ์ง์ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ ํ์ผ๊ณผ pdfjs๋ฅผ ๋์ผํ ํ์ผ ์๋ฒ์ ๋ ์ ์์ต๋๋ค.
ํ์ผ ์๋ฒ์์ "Access-Control-Allow-Origin"์ ์ค์ ํ๋ผ๋ ์ง์นจ์ ๋ฐ๋์ง๋ง ๊ณ์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
http ํค๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฌธ์ ์ ๊ฐ๋ฅํ ์์ธ์ ์ ๊ณตํ ์ ์๋์ง ํ์คํ์ง ์๋๋ผ๋ ๋ชจ๋ ํฌ์ธํฐ๋ฅผ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค!
@yjguoo ์ค๋ฅ ๋ฉ์์ง์ ํค๋๊ฐ ํฉ์ฐ๋์ง ์์ต๋๋ค.
๋ฆฌ๋๋ ์ ๋์์ ์์ ํค๋๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
chrome://net-internals/#events
๋ฐฉ๋ฌธํ๊ณ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ๋ก๊ทธ์์ ์ฐจ๋จ๋ ๋ฆฌ๋๋ ์
์ ์ค์ ํค๋๋ฅผ ํ์ธํฉ๋๋ค.
์๋ ํ์ธ์ Rob ๋น ๋ฅธ ์๋ต์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์์ฒญํ URL "https://files.dev52.slack.com/files-pri/T076SHX5W-F07CGBKK2/git-for-beginners-handout.pdf"๋ฅผ ์๋์ผ๋ก ์
๋ ฅํ๋ฉด ํ์ผ ์๋ฒ์์ ๋ค๋ฅธ ์๋ต ํค๋๊ฐ ๋ํ๋ฉ๋๋ค.
์๋ต ํค๋์ ๋ค๋ฅธ ์์น๋ก ๋ผ์ฐํ
๋์์์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋ก์ด ์์น์์ ๋๋ ์ํ 200 ok๋ฅผ ์ป์ต๋๋ค.
๋ด ์ฒซ ๋ฒ์งธ ์ง๋ฌธ: ๋ธ๋ผ์ฐ์ ์์ ์๋์ผ๋ก URL์ ์
๋ ฅํ๋ ๊ฒ๊ณผ XmlHttpRequest๋ฅผ ํตํ ๊ฒ ์ฌ์ด์ ์ฐจ์ด์ ์ด ์์ต๋๊น?
BTW ๊ธฐ๋ณธ pdf.js ๋ทฐ์ด(html css js)๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ค๋ฅธ ์ถ์ฒ์์ pdf๋ฅผ ์์ฒญํ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์๋ํฉ๋๋ค(๊ต์ฐจ ๋๋ ์์ฒญ ๋ฌธ์ )
๋ ๋ฒ์งธ ์ง๋ฌธ: ์ ๋ฌธ์ ์ธ์ง ์๋๋ฉด ๊ธฐ๋ณธ viewer.js/pdf.js๊ฐ XmlHttpRequest๋ฅผ ์ํํ๋ ๋ฐฉ์์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํ์ญ๋๊น?
๊ณ ๋ง์ต๋๋ค :)
๋ด ์ฒซ ๋ฒ์งธ ์ง๋ฌธ: ๋ธ๋ผ์ฐ์ ์์ ์๋์ผ๋ก URL์ ์ ๋ ฅํ๋ ๊ฒ๊ณผ XmlHttpRequest๋ฅผ ํตํ ๊ฒ ์ฌ์ด์ ์ฐจ์ด์ ์ด ์์ต๋๊น?
์, ํนํ ๊ต์ฐจ ์ถ์ฒ ์์ฒญ์ ๊ฒฝ์ฐ. ๊ต์ฐจ ์ถ์ฒ ์์ฒญ์ ์ํํ ๋ ์์ฒญ์ CORS์์ ํ์ฉํ ๊ฒฝ์ฐ์๋ง ํ์ฉ๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ Origin
ํค๋๋ก ์์ฒญ์ ๋ฐํํ๊ณ , ์๋ฒ๋ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ ์น์ธ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค( Access-Control-Allow-Origin
์๋ต ํค๋์ ์์ฒญ๋ ์ถ์ฒ ํฌํจ).
๋ํ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฒฉ ์ฆ๋ช
์ ๊ต์ฐจ ์ถ์ฒ ์์ฒญ์ ํฌํจ๋์ง ์์ต๋๋ค. ์ฟ ํค๋ฅผ ํฌํจํ๋ ค๋ฉด ์๋ฒ๊ฐ Access-Control-Allow-Credentials: true
์๋ตํด์ผ ํ๊ณ XHR ์์ฒญ์ withCredentials
์์ฑ์ด true
์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค.
๋ ๋ฒ์งธ ์ง๋ฌธ: ์ ๋ฌธ์ ์ธ์ง ์๋๋ฉด ๊ธฐ๋ณธ viewer.js/pdf.js๊ฐ XmlHttpRequest๋ฅผ ์ํํ๋ ๋ฐฉ์์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํ์ญ๋๊น?
์๋ฒ๋ฅผ ๋ค๋ฅด๊ฒ ๊ตฌ์ฑํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ MDN ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค. https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
๋๋ CORS ์ฌ์ ์ฝ๊ธฐ: https://www.w3.org/TR/2014/REC-cors-20140116/
์๋ ํ์ธ์ ๋กญ,
Access-Control-Allow-Credentials: true
๋ ์ค์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ง์ ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค <3. ๊ทธ๋ฌ๋ ๋ฆฌ๋๋ ์
๊ณผ ๊ด๋ จํ์ฌ ๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ช ๊ฐ์ง ์ง์นจ์ ์ ๊ณตํ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ XHR์ ํ๋ค
URL#1์ ์ฌ์ฉํ์ฌ ์์ฒญํ์ญ์์ค(ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋ ๋ฌธ์ ). ๊ทธ๋ฐ ๋ค์ URL#2(์ํ 302)๋ก ๋ฆฌ๋๋ ์
๋ฉ๋๋ค. ๊ทธ๋ฌ๋ URL#1๊ณผ URL#2๋ ๋ชจ๋ ๋์ผํ ์๋ฒ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
URL#1์ ๋ํด ํ๋ ๊ฒ๊ณผ ๋์ผํ ์๋ต ํค๋๋ฅผ ์ค์ ํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ ๋ค ๋์ผํ ์๋ฒ์ ์๊ณ Origin์ด null์ด๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
๋ URL์ด ๋์ผํ ์๋ฒ๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋๋ ์ ์ถ์ฒ๊ฐ NULL์ด์ง๋ง ํ์คํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด์ ๋ ๊ฐ์ ๋ค๋ฅธ ์ถ์ฒ๋ฅผ ์ฒ๋ฆฌํ์ง๋ง ๋ URL์ด ๋์ผํ ํ์ผ ์๋ฒ๋ฅผ ๊ฐ๋ฆฌํค๋ ํค๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? *์ ๊ฐ์ ์ ๊ท์์ ์ฌ์ฉํด ๋ณด์์ง๋ง ๋ถ๋ช ํ ํ์ฉ๋์ง ์์ต๋๋ค. (๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ๋๋ ์ ํ Chrome์ ์๋ณธ ํค๋๋ฅผ ์ค์ URL ๋์ "null" ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค( https://crbug.com/154967).
null
๊ฐ์ด ์๋ Access-Control-Allow-Origin
๋ฅผ ์กฐ๊ฑด๋ถ๋ก ๋ฐํํ ์ ์์ง๋ง ๋ชจ๋ ์น์ฌ์ดํธ์์ ํด๋น ๋ฆฌ์์ค๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๋ ค๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค . ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ(๋๋ถ๋ถ) ๋ฆฌ๋๋ ์
์ ํผํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ฒญ์ ๋์ URL๋ก ์ง์ ์ ์กํ์ฌ(URL์ ๋ฏธ๋ฆฌ ์์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋์ URL์ ๋ฐํํ๋ ์ API ๋์ ์ ์๋ฒ์ ์ถ๊ฐ).
๊ฐ์ฌํฉ๋๋ค! ์ดํด๋ณผ๊ฒ์ :)
Hey Rob src๊ฐ ์ด๋ฏธ ์ค์ ๋ pdf ๋ทฐ์ด๋ pdf.js๋ฅผ ์ด๊ธฐํํ๊ณ XHR ์์ฒญ์ ํ๊บผ๋ฒ์ ํผํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํ์ญ๋๊น?
@yjguoo PDF ๋ฐ์ดํฐ๋ฅผ base64๋ก ์ธ์ฝ๋ฉํ๊ณ ๋ฐ์ดํฐ URL์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํฐ PDF ํ์ผ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ base64๋ก ์ธ์ฝ๋ฉํ๋ฉด ํ์ผ ํฌ๊ธฐ๊ฐ 33% ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด๋ก ์ธํด ์ฌ์ฉ์ ๊ฒฝํ์ด ๋๋น ์ง๋๋ค(=์งํ๋ฅ ํ์์ค์ด ์๋ ๋น ํ์ด์ง). ์ด๋ฌํ ์ด์ ๋ก XHR์ ๊ณ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ ํ์ธ์, ๋ฐฉ๊ธ ํ ์คํธํ์ผ๋ฉฐ CORS๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ์๋ํ์ง๋ง ํ์ผ์ด ๋งค์ฐ ํฐ ๊ฒฝ์ฐ ํ์ผ์ ์ฒญํฌ/๋ฒ์๋ก ๊ฐ์ ธ์ค์ง ๋ชปํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
.htaccess์ ์ด๊ฒ์ ์ถ๊ฐํ์ฌ ํด๊ฒฐ:
ํค๋ ์ธํธ Accept-Ranges ๋ฐ์ดํธ
ํค๋ ์ธํธ Access-Control-Allow-Origin "*"
ํค๋ ์ธํธ Access-Control-Allow-Methods "GET"
ํค๋ ์ธํธ Access-Control-Allow-Headers "์ฝํ
์ธ ์ ํ, ๋ฒ์"
ํค๋ ์ธํธ Access-Control-Expose-Headers "Accept-Ranges, Content-Encoding, Content-Length, Content-Range"
๊ฐ์ฌํฉ๋๋ค!!!
@Rob--W ๋ง์ ๋์์ด ๋์์ต๋๋ค. ํ๋ก์ ํธ ๋ด๋ถ์์ ์๋ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น(์: XHR ํค๋ ๋ณ๊ฒฝ)? (worker.js ๋ด๋ถ)
์๋ ํ์ธ์, ์ฌ์ ํ ์ด๊ฒ์ ๋ฌธ์ ๊ฐ ์๋ ์ฌ๋์ ์ํด ๋ค์๊ณผ ๊ฐ์ด ํด๊ฒฐํ์ต๋๋ค.
https://drive.google.com/viewerng/viewer?embedded=true&url=http://www.africau.edu/images/default/sample.pdf
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@hashbyte ์๋ฒ์ฉ ํ๋ก์๊ฐ ํ์ํฉ๋๋ค. ๋ด๊ฐ ๊ฐ๋ฐํ ๋งค์ฐ ๊ฐ๋จํ ํ๋ก์๋ CORS Anywhere์ ๋๋ค. PDF ํ์ผ์ URL ์์ ํ๋ก์์ URL์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์:
๊ทธ๋ฐ ๋ค์ ์ด URL์ URL ์ธ์ฝ๋ฉํ๊ณ
file
๋งค๊ฐ๋ณ์์ ๋ฃ์ผ๋ฉด ๋ชจ๋ ํ์ด์ง๋ฅผ ์ด ์ ์๋ ๋งํฌ๋ฅผ ์ป์ ์ ์์ต๋๋ค. https://mozilla.github.io/pdf.js/web/viewer.html ?file=https%3A%2F%2Fcors-anywhere.herokuapp.com%2Fhttp%3A%2F%2Fbhpr.hrsa.gov%2Fhealthworkforce%2Frnsurveys%2Frnsurveyfinal.pdf์ฐธ๊ณ : PDF URL์ ํผ์ผํธ ๊ธฐํธ๋
&
๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ง ์์ ๊ฒฝ์ฐ ๋งํฌ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์ค๋ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋งํฌ ์์ ๋ทฐ์ด URL์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค(๋ฐ๋ผ์ ๋จผ์ URL ์ธ์ฝ๋ฉ ์์ด ). URL์ ์๋์ผ๋ก ์ ๋ ฅํ๋ ๊ฒฝ์ฐ์๋ง ์ด ์์ ์ ์ํํ์ญ์์ค(์: ๋น ๋ฅธ ํ ์คํธ๋ฅผ ์ํํ ๋):https://mozilla.github.io/pdf.js/web/viewer.html?file=https://cors-anywhere.herokuapp.com/ http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal. PDF
์ฐธ๊ณ : CORS Anywhere ๋ฐ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ง ์ ๊ณต๋ฉ๋๋ค. ๋ฐฉ๋ฌธ์๊ฐ ๋ง์ ์ฌ์ดํธ์์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๊ณต๊ฐ ๋ฐ๋ชจ ์๋ฒ์ ๋ถ๋นํ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ์ง ์๋๋ก CORS Anywhere ์ธ์คํด์ค๋ฅผ ์ง์ ํธ์คํ ํ์ญ์์ค. CORS Anywhere์ ์ฑ๋ฅ์ด ๋จ์ฉ์ผ๋ก ์ธํด ํฌ๋กค๋ง๋๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ฉด ๊ทํ์ ์ถ์ฒ๊ฐ ๋ธ๋๋ฆฌ์คํธ์ ์ฌ๋ผ๊ฐ๋๋ค. CORS Anywhere๋ฅผ ์ง์ ํธ์คํ ํ ๋
originWhitelist
๊ตฌ์ฑ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด์๋ง ์ฌ์ดํธ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํ์ฌ ์ด๋ฌํ ๋จ์ฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.