도메인 간 세션 손실 및 다중 OPTIONS 요청 문제 해결
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
그러나 크로스오버를 할 때session은 분실을 일으킬 수 있다.express에서 클라이언트에게 쿠키를 발급할 때마다 클라이언트가 돌아오지 않기 때문에 매번 새로운 제출과 같다.따라서 도메인 간 설정의 첫 번째 행은 "Access-Control-Allow-Origin"(Access-Control-Allow-Origin)로 변경해야 합니다. "http://192.168.1.240";//은(는) *이 될 수 없으며response.setHeader("Access-Control-Allow-Credentials","true")를 지정해야 합니다.//cookie 도메인 간 지원 여부
해당 Angular4에서도 요청을 시작할 때 머리에서 다음과 같이 설정해야 합니다.
let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
let options = new RequestOptions({headers: headers, withCredentials: true});
return this.http.post(submitUrl, params, options)....
참고는 다음과 같다:angular 전역과session 실효 문제
OPTIOP 요청 문제, 크로스 도메인 때문에 RFC 문서에 설명되어 있는 바와 같이 클라이언트가 먼저 OPTIONS 요청을 할 것입니다. 왜냐하면 Google의 POST 요청 헤더는Content-Type 유형이 응용 프로그램/json이지 다음 중 하나가 아니기 때문입니다.
그래서 OPTIONS 요청을 일으킬 수 있다. 내가 끊임없이 시도해 보았지만 내 요청 유형이 응용 프로그램/json이고 OPTIONS 요청을 하지 않는 목적에 도달하지 못했다. 그래서 최종적으로 요청 유형을 응용 프로그램/x-www-form-urlencoded로 바꾸었다. 그러면 내 클라이언트의payload가 서열화된 후에 속성 이름이 되었다. 나는 서버에서 이 속성 이름을 가져와서 반서열화할 수 밖에 없다.
http.post(submitUrl, params, options) // params json
서버측
var mybody = req.body;
for(var key in mybody){
break;
}
var params = JSON.parse(key); // params json
징그러운 건 알지만 당분간은 이럴 수밖에 없어요.
관련 읽기 및 참조:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.