CORS 정보 (1)
CORS란?
EN: Cross-origin resource sharing (CORS)
KO: 오리진 간 리소스 공유
아래 사이트에서 이렇게 정의되어 있습니다.
htps : //로 ゔぇぺぺr. 모잖아. 오 rg / 그럼 / cs / u b / Ht tP / RS
오리진 간 리소스 공유 Cross-Origin Resource Sharing (CORS)은 추가 HTTP 헤더를 사용하여 한 오리진에서 실행되는 웹 응용 프로그램에 다른 오리진의 선택한 리소스에 대한 액세스 권한을 부여하도록 브라우저 에 지시하는 메커니즘입니다.
보충) origin 정보
htps : //로 ゔぇぺぺr. 모잖아. 오 rg / 자 / 도 cs / G ぉ さ ry / 오리 긴
실제로 만져 보자.
파이썬 tornado라는 라이브러리를 사용하여 다양한 검증
htps //w w. 그리고 r 어쨌든 b. rg/엔/s타 bぇ/
아래 코드를 test.py에 쓰고 python test.py를 실행하면 간단한 웹 서버가 시작됩니다.
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
시도에 브라우저에서 설정한 URL에 액세스해 보니 무사히 표시되었다.
http://localhost:8888/
개발자 툴의 콘솔에 시험에 아래의 커맨드를 쳐 보면 무사히 내용을 얻을 수 있었다.
fetch('http://localhost:8888').then(a => a.text()).then(console.log)
같은 오리진으로부터의 get 리퀘스트이므로, 취득할 수 있는 것은 당연과 같은 느낌이군요.
Google 홈페이지를 열고 같은 일을 하면 어떻게 되는지 확인해보자.
얻을 수 없었다.
クロスオリジン要求をブロックしました:
同一生成元ポリシーにより、http://localhost:8888/ にあるリモートリソースの読み込みは拒否されます
(理由: CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない)。
요청에 'Access-Control-Allow-Origin'의 지정이 필요하다는 것을 알았다.
test.py의 get에 아래의 한 줄을 더하여 프로그램을 다시 시작해 보았다.
self.add_header("Access-Control-Allow-Origin","htps //w w. 오, ぇ. 이 m” )
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.add_header("Access-Control-Allow-Origin","https://www.google.com")
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
이전과 마찬가지로 google에서 get 요청을 보내 보면 안전한 텍스트를 얻을 수 있습니다.
즉, 오리진 A로부터 오리진 B에 어떠한 요청을 보낼 때, 오리진 B 측에서 오리진 A로부터의 요청을 허가하는 설정을 하지 않는 한, 오리진 A로부터 오리진 B의 내용을 취득할 수 없다.
반대로, 오리진 B측에서 오리진 A로부터의 리퀘스트에 대해 사전 허가해 주면, 오리진 A로부터 오리진 B의 컨텐츠를 취득할 수 있게 된다는 것이다.
이번 정리
1.CORS는 오리진간 자원 공유 시에 사용하는 정책적인 것
2. 방문처의 오리진측에서 사전에 Access-Control-Allow-Origin을 설정해 두면, 방문원의 오리진으로부터 방문처의 자원을 취득할 수 있지만, 설정이 없는 경우, 취득할 수 없다.
Reference
이 문제에 관하여(CORS 정보 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/neko-kamaboko/items/09c969ebc25f7d27692a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)