django-storages和amazon s3 - 可疑操作

Kha*_*wal 9 django amazon-s3 python-django-storages

我在Amazon S3上使用django-storage.我间歇地看到以下错误:

name = self._normalize_name(self._clean_name(name))\n\n  File \"/app/.heroku/venv/lib/python2.7/site-packages/storages/backends/s3boto.py\", line 237, in _normalize_name\n    name)\n\nSuspiciousOperation: Attempted access to 'https:/plantvillage.s3.amazonaws.com/avatar/hans9_avatar.jpg'
Run Code Online (Sandbox Code Playgroud)

注意单/https:.

有谁知道为什么会出现这种情况?它不会一直发生.我可以在其他情况下成功地做到这一点.

tox*_*tes 1

我还没有在我自己的项目中使用 S3 存储,但我确实遇到了这个错误,也许可以为您指明正确的方向。

如果你看一下 S3BotoStorage._clean_name(),它只是:return os.path.normpath(name).replace('\\', '/')。os.path.normpath() 将URL 中的//转换为\\,然后 .replace() 将其转换为\。然后,S3BotoStorage._normalize_name() 检查以确保这个损坏的 URL 是它所代表的位置的一部分,当然事实并非如此。这就是引发 SuspiciousOperation 错误的地方。

因此,“名称”看起来应该是本地路径,而不是整个 AWS URL。就我而言,直接原因是FILEBROWSER_DIRECTORY = MEDIA_URL + "uploads/"在 settings.py 中,我曾尝试希望修复有关丢失上传文件夹的其他错误。