RSS

javascript AJAX 교차 도메인 POST 원격 액세스의 간단한 구현 문제

출시일:2022/11/12 11:06

사실 문제는 매우 간단합니다.요청을 POST할 수 있고 서버도 응답을 반환합니다.로컬 자바 스크립트가 응답을 처리하지 못하도록 하는 것은 최신 브라우저의 보안 메커니즘입니다. 디버그 콘솔에 다음이 표시됩니다.

원본 'null'에서 'https://ip.taotu.org/'의 XMLHttpRequest에 대한 액세스가 CORS 정책에 의해 차단되었습니다. 요청된 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다.

문제는 로컬 페이지를 게시하면 브라우저가 자동으로 헤더인 Origin: null을 추가하고 서버가 응답을 반환할 때 응답 헤더 Access-Control-Allow-Origin: *를 추가하지 않거나 헤더를 서버에서 반환한 값이 귀하의 것과 동일합니다. 보낸 헤더의 Origin이 일치하지 않으면 브라우저 클라이언트가 처리를 위해 응답 데이터를 javascript에 전달하지 않아 오류가 발생합니다.

솔루션: 사실 서버 백엔드 코드는 매우 간단합니다. 게시물 데이터에 지정된 정보(자신의 암호와 동일)가 포함되어 있는지 확인하기만 하면 됩니다. 그렇다면 Access-Control-Allow-Origin을 추가하십시오. * 클라이언트가 올바르게 처리될 수 있도록 합니다.

요약하면 AJAX 도메인 간 요청은 기본적으로 허용되지 않으며 브라우저에서 금지합니다.서버는 상황이 필요한지 판단하고 Access-Control-Allow-Origin:* 응답 헤더를 반환하며 OK입니다.

요청 페이지 자바스크립트 코드:

var xhttp = 새로운 XMLHttpRequest();

xhttp.onreadystatechange = 함수() {

if (this.readyState == 4 && this.status == 200) {

document.getElementById("queryipinfo").innerHTML =

this.responseText;

}

};

xhttp.open("POST", "https://ip.taotu.org", true);

xhttp.send('XX는 원격 요청 XX에서 온다'+ipdomain); //키 코드에 의해 추가된 이전 문자열은 우리 자신의 암호와 동일합니다.

서버 측 처리 코드:

Stream oPostData = Request.InputStream;

byte[] bPostByte=새 바이트[oPostData.Length];

oPostData.Read(bPostByte, 0, (int)oPostData.Length);

string sPostIPDomain=Encoding.UTF8.GetString(bPostByte);

부울 bFromRemote;

if (sPostIPDomain.StartsWith("XX는 원격 요청 XX에서 온다")) //키 코드

{

bFromRemote=참;

sPostIPDomain = Regex.Replace(sPostIPDomain,"XX는 원격 요청 XX(.*)", "$1");

*********생략된 코드********

if(bFromRemote) //헤더 반환 여부를 판단하는 키 코드

Response.AddHeader("Access-Control-Allow-Origin", "*"); //키 코드

그런데 일반적인 해결책은 서버 응답 헤더에 Access-Control-Allow-Origin: *을 설정하여 모든 도메인 간 요청을 허용하거나 Access-Control-Allow-Origin: https://taotu.org를 허용하는 것입니다. 지정된 도메인에서 보낸 요청은 정상적인 네트워크 개발에 사용되지만 집에서 로컬로 보낸 요청 도메인이 IP 주소이고 고정 IP가 아니라는 요구 사항이 있으면 오랫동안 해결할 수 없으므로 이 간단한 솔루션을 사용했습니다.

내 목적은 집에 있는 로컬 컴퓨터의 브라우저에서 정적 .html 파일을 설정하고 기본 홈페이지로 설정하는 것입니다. 브라우저를 열 때마다 Java를 통해 원격 서버에 게시 요청을 보내고 내 외부 네트워크 IP를 표시합니다. 정적 페이지에는 자주 사용하는 웹 사이트 링크와 3-in-1 검색 엔진도 있습니다.

이것은 내가 만든 작은 웹 페이지입니다. 방문을 환영하거나 홈페이지로 설정할 수 있습니다: https://ip.taotu.org

javascript AJAX 도메인 간 POST 원격 액세스의 간단한 구현 문제

사용자 코멘트

새 댓글 추가

확인 코드

188BET - 아시아 최고의 스포츠 베팅 플랫폼