tuna / issues

Code Unrelated Issues
363 stars 28 forks source link

Pypi 大小写敏感问题 #1930

Closed Firxiao closed 6 months ago

Firxiao commented 7 months ago

先决条件 (Prerequisites)

发生了什么(What happened)

https://pypi.tuna.tsinghua.edu.cn/simple/Requests/ 返回了404

期望的现象(What you expected to happen)

https://pypi.tuna.tsinghua.edu.cn/simple/Requests/ 自动跳转 https://pypi.tuna.tsinghua.edu.cn/simple/requests/ 并返回结果

如何重现此问题(How to reproduce it)

curl https://pypi.tuna.tsinghua.edu.cn/simple/Requests/

操作系统(OS Version)

No response

浏览器(如果适用)(Browser version, if applicable)

No response

其他环境(Other environments)

No response

其他需要说明的事项(Anything else we need to know)

官方的API 比如https://pypi.org/simple/Requests/ 会自动跳转https://pypi.org/simple/requests/

PEP 426 states:

All comparisons of distribution names MUST be case insensitive, and MUST consider hyphens and underscores to be equivalent.

Harry-Chen commented 7 months ago

镜像站的 PyPI 只是静态地提供文件,没有此类处理能力。pip 工具会在下载时通过 index 进行如你所述的忽略大小写的对比。如果需要浏览文件,请自行在 PyPI 查找后使用对应的 URL。

Firxiao commented 7 months ago

Hi @Harry-Chen 谢谢你的回复, 因为有些工具不能自动将请求包名自动小写. 我看了下我们这边用的是NGINX提供静态文件, 请问下能否尝试下 在NGINX上配置 不区分大小写, 谢谢. 可以参考: https://nginx.org/en/docs/http/ngx_http_core_module.html#location

Harry-Chen commented 7 months ago

Hi @Harry-Chen 谢谢你的回复, 因为有些工具不能自动将请求包名自动小写. 我看了下我们这边用的是NGINX提供静态文件, 请问下能否尝试下 在NGINX上配置 不区分大小写, 谢谢. 可以参考: https://nginx.org/en/docs/http/ngx_http_core_module.html#location

您提供的方法是不区分大小写对 URL 进行匹配,但并不能将 URL 进行实际的处理(canonicalize)。关于此需求,我们综合评估考虑。

此外,也建议您向相关的工具提交 issue。

Harry-Chen commented 7 months ago

目前已经用 njs 初步实现了该功能 (https://gist.github.com/Harry-Chen/98b4da85e208dac679acf2e72d22a3e2) ,但可能有未处理的 corner case。

Harry-Chen commented 7 months ago

TUNA、BFSU 均已经部署了相应的配置

Firxiao commented 7 months ago

测试通过 真是太迅速了 非常感谢

curl -I https://pypi.tuna.tsinghua.edu.cn/simple/Requests/  
HTTP/2 302
server: nginx/1.22.1
date: Mon, 08 Apr 2024 14:59:48 GMT
content-type: text/html
content-length: 145
location: https://pypi.tuna.tsinghua.edu.cn/simple/requests/
Harry-Chen commented 6 months ago

目前没有问题报告,确认可用。