์๋
ํ์ญ๋๊น,
์ธ๋ถ URL์์ pdf๋ฅผ ๋ก๋ํ๋ ค๊ณ ํ ๋ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ: ํ์ผ ์๋ณธ์ด ๋ทฐ์ด์ ์ผ์นํ์ง ์์ต๋๋ค.
throw new Error('ํ์ผ ์๋ณธ์ด ๋ทฐ์ด์ ์ผ์นํ์ง ์์ต๋๋ค.');
๋์์ฃผ์ธ์!
์ด๊ฒ์ ์๋์ ์ผ๋ก ์ํ๋ ๊ฒ์ ๋๋ค. #6916์ ์ฐธ์กฐํ์ญ์์ค. HOTED_VIEWER_ORIGINS ๋ชฉ๋ก์ ํธ์คํธ ์ถ์ฒ๋ฅผ ํฌํจํ๋๋ก viewer.js๋ฅผ ์์ ํฉ๋๋ค. ๋ต๋ณ๋๋ก ๋ง๊ฐํฉ๋๋ค.
@yurydelendik ๊ฐ์ฌํฉ๋๋ค
ํ์ง๋ง ์ด ๋ต๋ณ์ด ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค
ํ์ง๋ง ์ด ๋ต๋ณ์ด ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค
HOTED_VIEWER_ORIGINS ๋ชฉ๋ก์ ํธ์คํธ ์ถ์ฒ๋ฅผ ํฌํจํ๋๋ก viewer.js๋ฅผ ์์ ํฉ๋๋ค.
ํ๋๋ฐ ์๊ฒฉ pdf ํ์ผ์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค
ํ๋๋ฐ ์๊ฒฉ pdf ํ์ผ์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค
์ค๋ช ํด์ฃผ์ญ์์ค. ๋ํ ๋ค์ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ด pdf ํ์ผ์ cloudinary์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ DEFAULT_URL ๋ณ์์ ์ก์ธ์ค๋ฅผ ์
๋ ฅํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ค๋ฅ: ํ์ผ ๋ทฐ์ด์ ์ถ์ฒ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค.
throw new Error( 'ํ์ผ ๋ทฐ์ด ์๋ณธ์ด \' s '์ ์ผ์นํ์ง ์์);
๋ด URL pdf์ ์ http://res.cloudinary.com/image/upload/v1459791656/my_file.pdf
๋๋ viewer.js์์ ์ด ์ค์ ์ฃผ์ ์ฒ๋ฆฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
if (fileOrigin !== viewerOrigin) {
throw new Error('ํ์ผ ์๋ณธ์ด ๋ทฐ์ด์ ์ผ์นํ์ง ์์ต๋๋ค.');
}
๋ ผ๋ฆฌ๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ์ง ๋ง์ญ์์ค. console.log()๋ฅผ ์ฌ์ฉํ์ฌ fileOrigin๊ณผ viewerOrigin์ด ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค. HOSTED_VIEWER_ORIGINS ๊ฐ์ฒด์ ํญ๋ชฉ ์ค ํ๋ ์ด์์ด viewerOrigin๊ณผ ์ผ์นํ๋์ง ํ์ธํ๊ณ "_ํ์ผ ์๋ณธ์ด ๋ทฐ์ด์ ์ผ์นํ์ง ์์ต๋๋ค_" ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง๋๋ค.
์ด๊ฑธ ๋ํด:
console.log('fileOrigin', fileOrigin);
console.log('viewerOrigin', viewerOrigin);
... ๋ฐ๋ก ์:
if (fileOrigin !== viewerOrigin) {
throw new Error('file origin does not match viewer\'s');
}
๋์ฒ๋ผ URL ๋์ ์ถ๊ฐ๋ ์ฌ๋์๊ฐ ๋๋ฝ๋์๊ฑฐ๋ ์ถ๊ฐ๋์์ ๊ฒ์ ๋๋ค(์ฝ์์์ ๋ ๋ณ์๋ฅผ ๋ก๊น ํ ๋ ๋ฐ๊ฒฌ๋จ).
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
regex/wildchars๋ฅผ ์ฌ์ฉํ์ฌ HOSTED_VIEWER_ORIGINS ๋ฐฐ์ด์ ๊ตฌ์ฑํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
ํ๋ ์ฝ๋ฉ๋์ง ์์ Mozilla ๋๋ฉ์ธ์ ํ์ฉํ๋ ค๋ฉด viewer.js๋ผ๋ 10k ๋ผ์ธ ๋น๋ ํ์ผ์ ์์ค ์ฝ๋๋ฅผ ์์ ํด์ผ ํฉ๋๊น?
@gildassamuel ๋น์ ์ด ๋์ ํ๋ฃจ๋ฅผ
์ ์ ํ ์์ ์ viewer.js๋ฅผ ์ด๊ณ ํ์ผ์ ํธ์คํธ๋ฅผ HOSTED_VIEWER_ORIGINS์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค.
var HOSTED_VIEWER_ORIGINS = ['null', '.....'];
๊ฒ์ฌ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ง ๋ง์ญ์์ค :|
UWP์์ ๋ก์ปฌ pdf ํ์ผ๊ณผ ๋์ผํ ๋ฌธ์ (ํ์ผ ์ถ์ฒ๊ฐ ๋ทฐ์ด์ ์ผ์นํ์ง ์์)๊ฐ ์์ต๋๋ค. ๋ก์ปฌ ๊ฒฝ๋ก์ ๋ํด ์ ํํ HOTED_VIEWER_ORIGINS์ ์ด๋ค ํญ๋ชฉ์ ์ถ๊ฐํด์ผ ํฉ๋๊น?
์ฑ ๋ด์์ ์ด๊ฒ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ฌ๋์ ๊ฒฝ์ฐ ๋ก์ปฌ ๊ฒฝ๋ก๊ฐ ์๋ํ๋๋ก ํ์ฉํ๋ ค๋ฉด 'file://'์ ์ถ๊ฐํด์ผ ํ์ต๋๋ค.
var HOSTED_VIEWER_ORIGINS = [
'์๋',
' http://mozilla.github.io ',
' https://mozilla.github.io ',
'file://' //์ฑ์ ๋ก์ปฌ ๋ทฐ์ด
];
์ ๊ฒฝ์ฐ์๋ ๋ก์ปฌ๋ก ์ฝ๋ฉํ๊ณ ์์๊ณ ๋์ผํ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ก์ปฌ ์ฃผ์ ๋ฅผ ์ถ๊ฐํ์ฌ ํด๊ฒฐํ์ต๋๋ค.
var HOSTED_VIEWER_ORIGINS = [
'null',
'http://mozilla.github.io',
'https://mozilla.github.io',
'http://localhost:5000'
];
๊ทธ๋ฌ๋ ๊ฒ์ฌ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ง ๋ง์ญ์์ค .
if (fileOrigin !== viewerOrigin) {
throw new Error('file origin does not match viewer\'s');
}
์ด 2์ค์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ ํด๊ฒฐ์ฑ ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ก์ปฌ IP๊ฐ ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค(์ด๋์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํ ์ ์์)
var LOCAL_AUTO_DETECT_ORIGIN = window.location.origin;
var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];
HOSTED_VIEWER_ORIGINS.push(LOCAL_AUTO_DETECT_ORIGIN);
์ด๊ฒ์ ์๋์ ์ผ๋ก ์ํ๋ ๊ฒ์ ๋๋ค. #6916์ ์ฐธ์กฐํ์ญ์์ค. HOTED_VIEWER_ORIGINS ๋ชฉ๋ก์ ํธ์คํธ ์ถ์ฒ๋ฅผ ํฌํจํ๋๋ก viewer.js๋ฅผ ์์ ํฉ๋๋ค. ๋ต๋ณ๋๋ก ๋ง๊ฐํฉ๋๋ค.
๋๋ฅผ ๋์ ์ฃผ์๋ค
๊ทธ๊ฒ์ ๋งค์ฐ ๋์ ๋ฌธ์ ์ ๋๋ค. ์ด๋ป๊ฒ ํด์๋ ์์ง ํด๊ฒฐ๋์์ต๋๋ค.
์๋ณธ ' http://localhost '์์ ' https://dmain/file.pdf ' ๊ฐ์ ธ์ค๊ธฐ์ ๋ํ ์ก์ธ์ค๊ฐ CORS ์ ์ฑ ์ ์ํด ์ฐจ๋จ๋์์ต๋๋ค. ์์ฒญํ ๋ฆฌ์์ค์ 'Access-Control-Allow-Origin' ํค๋๊ฐ ์์ต๋๋ค. ๋ถํฌ๋ช ํ ์๋ต์ด ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ ์์ฒญ ๋ชจ๋๋ฅผ 'no-cors'๋ก ์ค์ ํ์ฌ CORS๊ฐ ๋นํ์ฑํ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์๋ ํ์ญ๋๊น,
์ด๊ฒ์ ๋ํ ์ด์ ๊ฐ ์์ต๋๊น?
pdfjs๊ฐ ์๋๋ผ cors ์ ์ฑ
์ ๊ด์ฌ์ ๊ฐ๋ ๊ฒ์ ๋ธ๋ผ์ฐ์ ์ ์ฑ
์์
๋๋ค.
์ด ์ฒดํฌ๋ฅผ ์์ ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
validateFileURL ํจ์ ์๋จ์ return;
๋ฅผ ์ถ๊ฐํ๋๋ฐ ์ด์ ์ ๋๋ก ์๋ํฉ๋๋ค. amazon s3์์ pdf๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค.
@IK77์ด ์ธ๊ธํ๋ฏ์ด ๊ทธ ์ด์ ๋ฅผ
๊ธ์, ๋๋ ์ด๊ฒ์ ๋ฐ๊ฒฌํ๋ค : https://github.com/mozilla/pdf.js/pull/6916
@IK77
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ viewer.js์์ ์ด ์ค์ ์ฃผ์ ์ฒ๋ฆฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
if (fileOrigin !== viewerOrigin) {
throw new Error('ํ์ผ ์๋ณธ์ด ๋ทฐ์ด์ ์ผ์นํ์ง ์์ต๋๋ค.');
}