Heroku에 CORS Anywhere 설계 방법
다만, 웹 개발과 다양한 오리온자리 간 통신이 필요한 경우는 있다.이 경우 필요한 지식은 CORS입니다.
CORS는 오리온 간 자원 공유를 통해 서로 다른 오리온 간 통신을 가능하게 하는 구조다.
CORS의 오류 대응에는 몇 가지 방법이 있는데, 이 글에서 Heroku에게 CORS Anywhere의 프록시 서버를 사용하는 방법을 소개한다.
CORS Anywhere 가 에이전트에 CORS 헤더 Node 를 추가하도록 요청합니다.js 에이전트
CORS Anywhere를 시도하기 전에 공개 서버를 준비했으나 2021년 1월 31일 한정된 사용만 받았다.
CORS Anywhere를 사용하여 프록시 서버를 구축할 때 사용하는 서비스, 애플리케이션, 언어 등은 다음과 같습니다.
환경 준비
최종 프로젝트의 문서 구성은 다음과 같다.
project-name
├── package.json
├── Procfile
├── .gitignore
├── src
│ └── server.ts
├── tsconfig.json
└── yarn.lock
yarn을 통해 포장의 초기화.아직 설치하지 않은 사람은 아래 링크를 참고하세요.yarn init
빨리 CORS Anywhere를 설치하세요.CORS Anywhere는 유형 정의 파일@types
을 제공하지 않아서 설치하지 않습니다.다음 노드.Type Script를 사용하여 js를 처리해 보십시오.
yarn add cors-anywhere
Node.js의 형식 정의 파일을 설치합니다.yarn add typescript -D
프로젝트의 루트 디렉터리에 폴더src
를 만들고 파일server.ts
을 만듭니다.originWhitelist
에는 요청이 가능한 올리브유를 기재할 수 있다.빈 배열이라면 모든 사냥꾼자리의 요구를 받아들일 수 있다.
server.ts
yarn add @types/node
서버에 대한 설명은 다음과 같습니다.그런 다음 Type Script의 구축 및 노드가 표시됩니다.js 서버의 시작 명령을 기술합니다.
package.json
const host = process.env.HOST || '0.0.0.0';
const port = process.env.PORT || 8080;
import * as cors_proxy from 'cors-anywhere';
cors_proxy.createServer({
// 許可するオリジンを記載
originWhitelist: ['https://example.com'],
requireHeader: ['origin', 'x-requested-with'],
removeHeaders: ['cookie', 'cookie2']
}).listen(port, host, function() {
console.log('OHTAM CORS Anywhere起動中 ' + host + ':' + port);
});
package.json
명령에서 Heroku 패키지 설치 처리가 끝난 후에 실행된 처리를 명확하게 기술할 수 있다.heroku-postbuild
프로젝트의 루트 디렉터리에 파일을 만듭니다. 다음과 같습니다.tsconfig.json
에서 컴파일에 필요한 옵션을 지정합니다.tsconfig.json
{
"name": "typescript-cors-anywhere",
"version": "1.0.0",
"main": "server.js",
"license": "MIT",
"scripts": {
"build": "tsc",
"watch": "tsc --watch",
"start": "node server.js",
"heroku-postbuild": "tsc"
},
"dependencies": {
"@types/node": "^14.14.31",
"cors-anywhere": "^0.4.3"
},
"devDependencies": {
"typescript": "^4.1.5"
}
}
준비가 됐으면 구축 명령을 실행해 보세요!
{
"compilerOptions": {
"module": "commonjs",
"target": "es2020",
"sourceMap": true,
"types": [
"node"
],
"rootDir": "./src",
"outDir": "./",
},
"exclude": [
"node_modules"
]
}
루트 디렉터리에 tsconfig.json
를 만들면 됩니다.다음 노드.js 서버를 시작해 보세요.
yarn build
Heroku를 위한 디자인.
로컬 서버의 시작에 문제가 없음을 확인하면, 마지막으로 루트 디렉터리에 Procefile을 만듭니다.
Procefile에서 응용 프로그램을 시작할 때 실행되는 명령을 명시적으로 선언합니다.여기에는 아래와 같이 서술한다.
server.js
이곳에서 일하는 것이 바로 이것들이다.로컬에서 준비한 프로젝트 파일은 GiitHub에 창고를 만들고 누르십시오.
Heroku로 새 프로그램을 만들고 방금 만든 GiitHub의 창고와 연결합니다.
GiitHub과 병합하여 소스 코드를 자동으로 생성할 수 있는 프로그램입니다.
수동 디버깅을 실행하여 서버가 정상적으로 시작되었는지 확인하십시오.
프론트 데스크의 요구 방법
요청할 때 프록시 서버의 URL과 요청 주소의 URL을 연결하면 다음과 같습니다.
web: node server.js
CORS Anywhere를 사용하여 안내 데스크에서 요청한 샘플을 다음과 같이 처리합니다.yarn start
jQuery를 사용한 샘플 처리 등도 아래 공식 문서에 기재되었으니 참고하시기 바랍니다.총결산
이번 CORS 오류는 프록시 서버를 사용해야 하며 가능하면 요청을 받은 서버에서 처리하는 것이 좋습니다.
Reference
이 문제에 관하여(Heroku에 CORS Anywhere 설계 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kazuki_tam/articles/93e2f3938a5fbf977bd3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)