|
|
@@ -419,31 +419,41 @@ func (c *ShudaoOssController) ParseOSS() {
|
|
|
// 获取URL参数(加密的)
|
|
|
encryptedURL := c.GetString("url")
|
|
|
if encryptedURL == "" {
|
|
|
+ fmt.Printf("OSS代理请求缺少url参数\n")
|
|
|
c.Ctx.ResponseWriter.WriteHeader(400)
|
|
|
c.Ctx.WriteString("缺少url参数")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ fmt.Printf("OSS代理请求 - 加密URL: %s\n", encryptedURL)
|
|
|
+
|
|
|
// 解密URL
|
|
|
decryptedURL, err := utils.DecryptURL(encryptedURL)
|
|
|
if err != nil {
|
|
|
+ fmt.Printf("OSS代理请求 - URL解密失败: %v\n", err)
|
|
|
c.Ctx.ResponseWriter.WriteHeader(400)
|
|
|
c.Ctx.WriteString("URL解密失败: " + err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ fmt.Printf("OSS代理请求 - 解密后URL: %s\n", decryptedURL)
|
|
|
+
|
|
|
// URL解码,处理可能的编码问题
|
|
|
decodedURL, err := neturl.QueryUnescape(decryptedURL)
|
|
|
if err != nil {
|
|
|
decodedURL = decryptedURL
|
|
|
}
|
|
|
|
|
|
+ fmt.Printf("OSS代理请求 - URL解码后: %s\n", decodedURL)
|
|
|
+
|
|
|
var actualOSSURL string
|
|
|
|
|
|
// 检查是否是代理URL格式(包含?url=参数)
|
|
|
if strings.Contains(decodedURL, "?url=") {
|
|
|
+ fmt.Printf("OSS代理请求 - 检测到嵌套代理URL格式\n")
|
|
|
parsedProxyURL, err := neturl.Parse(decodedURL)
|
|
|
if err != nil {
|
|
|
+ fmt.Printf("OSS代理请求 - 代理URL解析失败: %v\n", err)
|
|
|
c.Ctx.ResponseWriter.WriteHeader(400)
|
|
|
c.Ctx.WriteString("代理URL格式无效: " + err.Error())
|
|
|
return
|
|
|
@@ -451,28 +461,35 @@ func (c *ShudaoOssController) ParseOSS() {
|
|
|
|
|
|
actualOSSURL = parsedProxyURL.Query().Get("url")
|
|
|
if actualOSSURL == "" {
|
|
|
+ fmt.Printf("OSS代理请求 - 代理URL中缺少url参数\n")
|
|
|
c.Ctx.ResponseWriter.WriteHeader(400)
|
|
|
c.Ctx.WriteString("代理URL中缺少url参数")
|
|
|
return
|
|
|
}
|
|
|
+ fmt.Printf("OSS代理请求 - 从嵌套URL提取的实际URL: %s\n", actualOSSURL)
|
|
|
} else {
|
|
|
actualOSSURL = decodedURL
|
|
|
+ fmt.Printf("OSS代理请求 - 直接使用解密URL: %s\n", actualOSSURL)
|
|
|
}
|
|
|
|
|
|
// 验证实际OSS URL格式
|
|
|
parsedOSSURL, err := neturl.Parse(actualOSSURL)
|
|
|
if err != nil {
|
|
|
+ fmt.Printf("OSS代理请求 - OSS URL解析失败: %v\n", err)
|
|
|
c.Ctx.ResponseWriter.WriteHeader(400)
|
|
|
c.Ctx.WriteString("OSS URL格式无效: " + err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
if parsedOSSURL.Scheme == "" {
|
|
|
+ fmt.Printf("OSS代理请求 - OSS URL缺少协议方案: %s\n", actualOSSURL)
|
|
|
c.Ctx.ResponseWriter.WriteHeader(400)
|
|
|
c.Ctx.WriteString("OSS URL缺少协议方案")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ fmt.Printf("OSS代理请求 - 最终请求URL: %s\n", actualOSSURL)
|
|
|
+
|
|
|
// 创建HTTP客户端,设置超时时间
|
|
|
client := &http.Client{
|
|
|
Timeout: 30 * time.Second,
|
|
|
@@ -481,14 +498,18 @@ func (c *ShudaoOssController) ParseOSS() {
|
|
|
// 发送GET请求到实际的OSS URL
|
|
|
resp, err := client.Get(actualOSSURL)
|
|
|
if err != nil {
|
|
|
+ fmt.Printf("OSS代理请求 - 连接OSS失败: %v\n", err)
|
|
|
c.Ctx.ResponseWriter.WriteHeader(502)
|
|
|
c.Ctx.WriteString("无法连接到OSS: " + err.Error())
|
|
|
return
|
|
|
}
|
|
|
defer resp.Body.Close()
|
|
|
|
|
|
+ fmt.Printf("OSS代理请求 - OSS响应状态码: %d\n", resp.StatusCode)
|
|
|
+
|
|
|
// 检查HTTP状态码
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
|
+ fmt.Printf("OSS代理请求 - OSS返回错误状态码: %d\n", resp.StatusCode)
|
|
|
c.Ctx.ResponseWriter.WriteHeader(resp.StatusCode)
|
|
|
c.Ctx.WriteString(fmt.Sprintf("OSS返回错误: %d", resp.StatusCode))
|
|
|
return
|