기본 도메인에서 하위 도메인에 액세스하지 못함: 'Access-Control-Allow-Origin' 헤더 누락
문제 요약
기본 도메인에서 하위 도메인의 API 서버에 액세스할 때 CORS 정책 오류가 발생합니다. "요청한 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다."
실행 전 확인 고려 사항
잠재적인 솔루션을 조사하기 전에 Chrome DevTools를 사용하여 실행 전 요청을 확인하여 캐싱 문제를 배제하고 추가 문제 해결을 위한 적절한 요청 유형을 식별하는 것이 중요합니다.
진단 단계
코드 예
옵션 1이 작동하는 동안 있는 그대로 다음 예는 CORS 문제를 해결하기 위한 다양한 접근 방식을 보여주는 것을 목표로 합니다.
옵션 2: 사용자 정의 CORS 미들웨어
<code class="go">package main import ( "log" "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.New() r.Use(CORS()) r.POST("/api/v1/users", func(ctx *gin.Context) { ctx.JSON(http.StatusOK, gin.H{"message": "OK"}) }) if err := r.Run(); err != nil { log.Printf("failed to start server: %v", err) } } func CORS() gin.HandlerFunc { return func(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Origin", "*") c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With") c.Writer.Header().Set("Access-Control-Max-Age", "86400") if c.Request.Method == http.MethodOptions { c.AbortWithStatus(http.StatusNoContent) return } c.Next() } }</code>
옵션 3: 외부 라이브러리의 CORS 미들웨어
<code class="go">package main import ( "log" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.Use(cors.New(cors.Config{ AllowOrigins: []string{"*"}, AllowMethods: []string{"GET", "POST", "PUT", "DELETE"}, AllowHeaders: []string{"*"}, ExposeHeaders: []string{"Content-Length"}, AllowCredentials: true, MaxAge: 86400, })) router.GET("/api/v1/users", func(c *gin.Context) { c.JSON(200, gin.H{"message": "OK"}) }) if err := router.Run(); err != nil { log.Printf("failed to start server: %v", err) } }</code>
해결
특정 문제의 경우 잘못된 AWS 로드로 인해 문제가 발생한 것으로 확인되었습니다. Balancer 대상 그룹 설정, 특히 인증서가 Route 53 및 ALB에만 할당된 경우 프로토콜을 HTTPS로 잘못 구성했습니다. 프로토콜을 HTTP로 변경하면 문제가 해결되었습니다.
위 내용은 내 하위 도메인의 API 서버에서 CORS 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!