현재 블로그 작업을 할 때 프런트엔드와 백엔드 분리를 사용하고 프런트엔드와 백엔드 로직을 두 개의 별도 저장소에 배치하고 두 대의 서버에 배포하는 것을 고려하고 있습니다.
내 메인 도메인 이름은 godtail.cn
입니다. (현재 ghost
을 사용하여 새 블로그를 작성 중입니다...)
프런트 엔드 도메인 이름: www.godtail.cn
godtail.cn
|
m.godtail.cn
입니다.
api.godtail.cn
현재 문제를 해결하는 두 가지 방법을 알고 있습니다. 跨域
답글 내용:
현재 블로그 작업을 할 때 프런트엔드와 백엔드 분리를 사용하고 프런트엔드와 백엔드 로직을 두 개의 별도 저장소에 배치하고 두 대의 서버에 배포하는 것을 고려하고 있습니다.입니다. (현재
을 사용하여 새 블로그를 작성 중입니다...)
godtail.cn
ghost
www.godtail.cn
백엔드 도메인 이름은 godtail.cn
m.godtail.cn
라는 메시지가 나오는 걸 발견했습니다. 뭐, 메인 도메인 이름이 같으면 도메인 간은 안 되는 줄 알았어요(같은 도메인 이름, 다른 포트도 도메인 간이겠죠). api.godtail.cn
跨域
JSONP를 사용하세요. 솔직히 저는 JSONP를 사용하는 것을 별로 좋아하지 않습니다. 보안 문제가 발생하거나 효율성이 저하될 것 같습니다. (이 두 가지 사항은 단지 제 추측입니다.)
어떤 소스에서든 액세스할 수 있습니다. js 삽입이 있나요?
백엔드에 교차 도메인 헤더 추가
더 나은 해결책을 갖고 있는 사람이 있나요?
아이디어: 하드 코딩된 도메인 이름이나
대신
도메인 이름(Access-Control-Allow-Origin
)에 대한 대상을 추가하세요.
대략적인 구현(의사 코드):
Access-Control-Allow-Origin
Origin 请求头
하지만 다시 요청 헤더를 시뮬레이션할 수 있으므로 인터페이스 요청 매개변수를 암호화하고 프런트엔드 스크립트를 압축 및 난독화하는 것이 좋습니다*
NetEase Cloud Music의 인터페이스 암호화를 참조하세요(패키지를 가져와서 살펴보세요)
백엔드에 교차 도메인 헤더를 추가하여 모든 도메인 이름을 허용한 다음 코드에서 도메인 이름을 필터링하는 것을 고려하세요. 요구 사항을 충족하지 않는 도메인 이름은 404를 직접 반환합니다.
<code>// 允许跨域访问的域名数组 string[] allowOrigins = { "http://www.godtail.cn/", "http://godtail.cn/", "http://m.godtail.cn/", }; // 判断 origin 是否是自己的前端域名,如果是则添加 if(allowOrigins.Count(x => x.Contains(Request.Headers["Origin"])) > 0) Response.Header.Add("Access-Control-Allow-Origin", Request.Headers["Origin"]);</code>
nginx 역방향 프록시... 스스로 질문하고 대답한 것으로 밝혀졌습니다...
서버 측에서 'Access-Control-Allow-Origin:*' 헤더를 설정합니다.
위에서 언급한 내용입니다. 접속주소를 지정하시면 됩니다~
프런트엔드 코드가 손실되지 않는 서버에서 도메인 이름 전달
크로스 도메인 헤더는 일반 형식으로 작성할 수 없나요?
제가 채택한 첫 번째 방법인 jsonp, callback은 이런 요청이 너무 많으면 작성하기가 번거로울 것입니다.
두 번째 방법은 시도해 봤는데 안 되더라구요. 응답에 Control-Allow-Origin..*?