단순 HTTP 서버에서 액세스 제어 사용
매우 간단한 HTTP 서버용 셸 스크립트가 있습니다.
#!/bin/sh
echo "Serving at http://localhost:3000"
python -m SimpleHTTPServer 3000
어떻게 하면 다음과 같은 CORS 헤더를 활성화하거나 추가할 수 있는지 궁금합니다.Access-Control-Allow-Origin: *
이 서버로?
안타깝게도 단순한 HTTP 서버는 사용자 정의가 허용되지 않을 정도로 단순합니다. 특히 보내는 헤더에 대해서는 사용자 정의가 허용되지 않습니다.그러나 대부분의 HTTP 서버를 사용하여 직접 만들 수 있습니다.SimpleHTTPRequestHandler
원하는 헤더만 추가하면 됩니다.
이를 위해 파일을 생성합니다.simple-cors-http-server.py
(또는 무엇이든) 사용 중인 Python 버전에 따라 다음 코드 중 하나를 내부에 넣습니다.
그러면 할 수 있습니다.python simple-cors-http-server.py
그러면 모든 응답에 대한 CORS 헤더를 설정하는 수정된 서버가 실행됩니다.
셰뱅을 맨 위에 두고 파일을 실행 파일로 만들어 PATH에 넣으면 다음을 사용하여 실행할 수 있습니다.simple-cors-http-server.py
너무.
Python 3 솔루션
Python 3은 모듈에서 와 를 사용하여 서버를 실행합니다.
#!/usr/bin/env python3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test
import sys
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
test(CORSRequestHandler, HTTPServer, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
Python 2 솔루션
Python 2는 및 모듈을 사용하여 서버를 실행합니다.
#!/usr/bin/env python2
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
BaseHTTPServer.test(CORSRequestHandler, BaseHTTPServer.HTTPServer)
Python 2 & 3 솔루션
Python 3과 Python 2 모두에 대한 호환성이 필요한 경우 두 버전 모두에서 작동하는 이 폴리글롯 스크립트를 사용할 수 있습니다.먼저 Python 3 위치에서 가져오기를 시도하고 그렇지 않으면 Python 2:
#!/usr/bin/env python
try:
# Python 3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test as test_orig
import sys
def test (*args):
test_orig(*args, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
except ImportError: # Python 2
from BaseHTTPServer import HTTPServer, test
from SimpleHTTPServer import SimpleHTTPRequestHandler
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
test(CORSRequestHandler, HTTPServer)
http-server와 같은 대안을 시도합니다.
애즈 심플HTTPS 서버는 실제 운영 환경에 배포하는 서버가 아닙니다. 여기서는 파일을 노출하는 작업을 수행하는 한 어떤 도구를 사용하는지에 대해 그다지 신경 쓰지 않는다고 생각합니다.http://localhost:3000
단순 명령줄에 CORS 헤더 포함
# install (it requires nodejs/npm)
npm install http-server -g
#run
http-server -p 3000 --cors
HTTPS가 필요합니까?
로컬에서 https가 필요하다면 캐디나 certbot도 시도할 수 있습니다.
2022년 편집: 제가 가장 좋아하는 솔루션은 이제 Next.js에서 내부적으로 사용하는 serve입니다.
그냥 도망가npx serve --cors
유용할 수 있는 몇 가지 관련 도구
ngrok: 실행 시
ngrok http 3000
그것은 URL을 만듭니다.https://$random.ngrok.com
누구나 액세스할 수 있는http://localhost:3000
서버.컴퓨터에서 로컬로 실행되는 내용(로컬 백엔드/apis 포함)을 세상에 노출할 수 있습니다.로컬 터널: ngrok와 거의 같습니다.
now: 실행 시
now
정적 자산을 온라인으로 업로드하고 배포합니다.https://$random.now.sh
사용자가 달리 결정하지 않는 한 이러한 사용자는 영원히 온라인 상태로 유지됩니다.디핑 덕분에 배포 속도가 빠릅니다(첫 번째 배포 제외).이제 프로덕션 프런트엔드/SPA 코드 배포에 적합합니다. 도커 및 NodeJS 앱도 배포할 수 있습니다.그것은 정말 무료는 아니지만, 그들은 무료 요금제를 가지고 있습니다.
저도 같은 문제를 안고 다음과 같은 해결책에 도달했습니다.
class Handler(SimpleHTTPRequestHandler):
def send_response(self, *args, **kwargs):
SimpleHTTPRequestHandler.send_response(self, *args, **kwargs)
self.send_header('Access-Control-Allow-Origin', '*')
SimpleSimple에서 새 . HTTP 는 HTTP RequestHandler만 합니다.send_response
방법.
사용해 보세요: https://github.com/zk4/livehttp . CORS를 지원합니다.
python3 -m pip install livehttp
하여 를 실행합니다.livehttp
그게 다야.
http://localhost:hosts
자체 do_GET() 인스턴스를 제공해야 합니다(HEAD 작업을 지원하도록 선택한 경우 do_HEAD()).다음과 같은 것:
class MyHTTPServer(SimpleHTTPServer):
allowed_hosts = (('127.0.0.1', 80),)
def do_GET(self):
if self.client_address not in allowed_hosts:
self.send_response(401, 'request not allowed')
else:
super(MyHTTPServer, self).do_Get()
내 작업 코드:
self.send_response(200)
self.send_header( "Access-Control-Allow-Origin", "*")
self.end_headers()
self.wfile.write( bytes(json.dumps( answ ), 'utf-8'))
언급URL : https://stackoverflow.com/questions/21956683/enable-access-control-on-simple-http-server
'UFO ET IT' 카테고리의 다른 글
뷰가 주어지면 뷰컨트롤러를 가져오려면 어떻게 해야 합니까? (0) | 2023.06.22 |
---|---|
EPLUS C#에서 테이블 확장 (0) | 2023.06.22 |
단일 숫자 벡터의 모든 요소 간 동일성 검정 (0) | 2023.06.22 |
Java에서 Oracle의 사용 재개(JDBC, 준비된 설명문) (0) | 2023.06.22 |
데이터 프레임 열의 데이터 유형 결정 (0) | 2023.06.22 |