mirror of https://github.com/hunshcn/gh-proxy
fix: nginx 502
parent
af06c85c3c
commit
ac3056043a
13
app/main.py
13
app/main.py
|
@ -164,22 +164,27 @@ def proxy(u, allow_redirects=False):
|
||||||
r_headers = dict(request.headers)
|
r_headers = dict(request.headers)
|
||||||
if 'Host' in r_headers:
|
if 'Host' in r_headers:
|
||||||
r_headers.pop('Host')
|
r_headers.pop('Host')
|
||||||
|
if 'Transfer-Encoding' in r_headers:
|
||||||
|
r_headers.pop('Transfer-Encoding') # 确保请求头中不包含Transfer-Encoding
|
||||||
|
|
||||||
try:
|
try:
|
||||||
url = u + request.url.replace(request.base_url, '', 1)
|
url = u + request.url.replace(request.base_url, '', 1)
|
||||||
if url.startswith('https:/') and not url.startswith('https://'):
|
if url.startswith('https:/') and not url.startswith('https://'):
|
||||||
url = 'https://' + url[7:]
|
url = 'https://' + url[7:]
|
||||||
r = requests.request(method=request.method, url=url, data=request.data, headers=r_headers, stream=True, allow_redirects=allow_redirects)
|
r = requests.request(method=request.method, url=url, data=request.data, headers=r_headers, stream=True, allow_redirects=allow_redirects)
|
||||||
headers = dict(r.headers)
|
|
||||||
|
|
||||||
if 'Content-length' in r.headers and int(r.headers['Content-length']) > size_limit:
|
# 创建一个新的响应头字典,去除Transfer-Encoding
|
||||||
|
headers = {k: v for k, v in r.headers.items() if k.lower() != 'transfer-encoding'}
|
||||||
|
|
||||||
|
if 'Content-length' in headers and int(headers['Content-length']) > size_limit:
|
||||||
return redirect(u + request.url.replace(request.base_url, '', 1))
|
return redirect(u + request.url.replace(request.base_url, '', 1))
|
||||||
|
|
||||||
def generate():
|
def generate():
|
||||||
for chunk in iter_content(r, chunk_size=CHUNK_SIZE):
|
for chunk in iter_content(r, chunk_size=CHUNK_SIZE):
|
||||||
yield chunk
|
yield chunk
|
||||||
|
|
||||||
if 'Location' in r.headers:
|
if 'Location' in headers:
|
||||||
_location = r.headers.get('Location')
|
_location = headers.get('Location')
|
||||||
if check_url(_location):
|
if check_url(_location):
|
||||||
headers['Location'] = '/' + _location
|
headers['Location'] = '/' + _location
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue