静态资产上的Django CORS

时间:2019-04-18 17:26:02

标签: django cors

我使用Django作为后端,并且遇到了跨源问题,该问题已在设置中使用corsheaders软件包解决。到目前为止,由于以下原因,我所有的GET端点都能正常工作:

CORS_ORIGIN_ALLOW_ALL = True

但是,我现在正在尝试访问Django后端上的静态文件,其位置如下:

http://localhost:8000/static/image.jpg

但是,浏览器客户端会像以前一样收到熟悉的错误:

Access to XMLHttpRequest at ... from origin ... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

有什么想法吗?谢谢

1 个答案:

答案 0 :(得分:2)

我假设您正在使用内置的staticfiles应用程序在开发中提供静态文件。与runserver一起使用staticfiles管理命令时,它使用WSGI处理程序来提供绕过中间件的静态文件。 (Django docs

您可以通过运行python manage.py runserver --nostatic来禁用它。当您使用--nostatic时,它将通过Django urlconf处理与所有其他URL相同的静态URL,因此请不要忘记在根urlconf中包含静态文件URL,如下所示:(请参见Static file development view

if settings.DEBUG:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()