이 주제에 대해 몇 번 질문을 받았지만 여전히 이해가되지 않습니다.
에 대한 답변을 읽을 때
‘Access-Control-Allow-Origin’헤더 없음
문제가 발생하면 도메인 간을 허용하려면 요청 된 서버에서 설정을 설정해야한다고 말합니다 : add_header 'Access-Control-Allow-Origin' '*';
.
그런데 왜 우체부 (클라이언트) 에게 물었을 때 매력처럼 작동하고 요청한 서버에서 응답을 받았 는지 알려주세요 .
감사합니다
답변
@Musa가 언급했듯이 그 이유는 다음과 같습니다.
Postman은 SOP에 대해 신경 쓰지 않고 브라우저가 아닌 개발 도구입니다.
그건 그렇고 , 브라우저에서 작동하도록하기 위한 크롬 확장 프로그램 입니다 (이는 크롬 용이지만 FF 또는 Safari 용으로 찾을 수 있음).
Cross-Origin 에 대해 자세히 알아보고 확장 기능이 작동하는 이유 를 확인 하려면 여기를 확인 하세요 .
답변
웹 사이트를 사용하고 정보 (예 : 사회 보장 번호)를 제출하기 위해 양식을 작성하는 경우 정보가 전송되고 있다고 생각하는 사이트로 정보가 전송되고 있는지 확인하고 싶습니다. 따라서 브라우저는 기본적으로 ‘방문중인 도메인이 아닌 도메인으로 정보를 보내지 마십시오.
결국 그것은 너무 제한적 이었지만 기본 아이디어는 여전히 브라우저에 남아 있습니다. 웹 페이지가 다른 도메인으로 정보를 보내지 않도록하십시오. 그러나 이것은 모든 브라우저 검사입니다. Chrome 및 Firefox 등에는 ‘이 요청을 보내기 전에 목적지가 방문중인 페이지와 일치하는지 확인합니다’라는 코드가 내장되어 있습니다.
Postman (또는 cmd 행의 CURL)에는 내장 검사가 없습니다. 사이트와 수동으로 상호 작용하므로 보내는 내용을 완전히 제어 할 수 있습니다.
답변
답변
여기에있는 모든 답변은 cors가 무엇인지에 대한 정말 좋은 설명이지만 귀하의 질문에 대한 직접적인 답변은 우편 배달부와 브라우저의 다음과 같은 차이점 때문입니다.
브라우저 : OPTIONS
API 엔드 포인트에 새 요청을 보내기 전에 서버 유형을 확인하고 헤더를 가져 오는 호출을 보냅니다 . 그것은 어디를 확인합니다 Access-Control-Allow-Origin
. 이것을 고려하여Access-Control-Allow-Origin
헤더는 기본적으로 브라우저가 동일한 출처 만 허용하지만 허용되는 모든 CROSS ORIGINS를 지정합니다.
우체부 : 보냅니다 직접 GET
, POST
, PUT
, DELETE
과 헤더를 받고 서버의 유형을 확인하지 않고 등의 요청 Access-Control-Allow-Origin
을 사용하여 OPTIONS
서버에 전화를.
답변
일반적으로 Postman은 디버깅에 사용되며 개발 단계에서 사용됩니다. 그러나 우편 배달부에서도 차단하고 싶다면 이것을 시도하십시오.
const referrer_domain = "[enter-the-domain-name-of-the-referrer]"
//check for the referrer domain
app.all('/*', function(req, res, next) {
if(req.headers.referer.indexOf(referrer_domain) == -1){
res.send('Invalid Request')
}
next();
});
답변
브라우저 / 크롬 우편 배달부 플러그인을 사용하여 웹 사이트처럼 CORS / SOP를 확인하세요. 이러한 제어를 방지하려면 대신 데스크톱 응용 프로그램을 사용하십시오.