github.com/qiniu/go-sdk/v7@v7.27.0/internal/clientv2/interceptor_anti_hijacking.go (about)

     1  package clientv2
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/qiniu/go-sdk/v7/storagev2/retrier"
     7  )
     8  
     9  type antiHijackingInterceptor struct{}
    10  
    11  func NewAntiHijackingInterceptor() Interceptor {
    12  	return &antiHijackingInterceptor{}
    13  }
    14  
    15  func (interceptor *antiHijackingInterceptor) Priority() InterceptorPriority {
    16  	return InterceptorPriorityAntiHijacking
    17  }
    18  
    19  func (interceptor *antiHijackingInterceptor) Intercept(req *http.Request, handler Handler) (response *http.Response, err error) {
    20  	response, err = handler(req)
    21  	if err != nil {
    22  		return
    23  	}
    24  	reqId := response.Header.Get("x-reqid")
    25  	log := response.Header.Get("x-log")
    26  	if reqId == "" && log == "" {
    27  		return nil, retrier.ErrMaliciousResponse
    28  	}
    29  	return
    30  }