Bläddra i källkod

Merge pull request #758 from sunshineplan/master

完善HTTP基本认证
DarienRaymond 8 år sedan
förälder
incheckning
82009c869e
2 ändrade filer med 5 tillägg och 8 borttagningar
  1. 4 7
      proxy/http/server.go
  2. 1 1
      testing/scenarios/http_test.go

+ 4 - 7
proxy/http/server.go

@@ -118,14 +118,11 @@ Start:
 		return trace
 	}
 
-	if len(s.config.Accounts) > 0 {
+  	if len(s.config.Accounts) > 0 {
 		user, pass, ok := parseBasicAuth(request.Header.Get("Proxy-Authorization"))
-		if !ok {
-			_, err := conn.Write([]byte("HTTP/1.1 407 Proxy Authentication Required\r\n\r\n"))
-			return err
-		}
-		if !s.config.HasAccount(user, pass) {
-			_, err := conn.Write([]byte("HTTP/1.1 401 UNAUTHORIZED\r\n\r\n"))
+		if !ok || !s.config.HasAccount(user, pass) {
+			_, err := conn.Write([]byte("HTTP/1.1 407 Proxy Authentication Required\r\n" +
+			"Proxy-Authenticate: Basic realm=\"V2Ray\"\r\n\r\n"))
 			return err
 		}
 	}

+ 1 - 1
testing/scenarios/http_test.go

@@ -284,7 +284,7 @@ func TestHttpBasicAuth(t *testing.T) {
 			setProxyBasicAuth(req, "a", "c")
 			resp, err := client.Do(req)
 			assert(err, IsNil)
-			assert(resp.StatusCode, Equals, 401)
+			assert(resp.StatusCode, Equals, 407)
 		}
 
 		{