美文网首页
请求django中static目录下的静态资源 | 解决跨域

请求django中static目录下的静态资源 | 解决跨域

作者: 明灭_ | 来源:发表于2019-03-16 23:56 被阅读0次

    问题背景

    最近用uni-app + django-rest-framework做毕设,前端有一个下载功能,需要请求后端static中的静态资源。但由于端口不同(8000和8080),一直报跨域的错误,如下图所示:

    error.png
    uni-app代码:
    uni.downloadFile({
        url: 'http://172.1xx.x.x:8000/static/imgs/logo.png',
        success: (res) => {...}
    })
    

    网上搜索到的django解决跨域的方法大同小异,基本如下所示:


    image.png

    但是这种方法并不能解决直接请求static资源的问题,只对请求后端接口数据有效。

    解决方法

    方法一
    cd static
    http-server --cors
    

    切入static目录,为static搭建一个node服务器,可以使用该服务器地址替换跨域的地址,进行资源请求。
    (此方法并未真正解决问题,只是绕过了问题。)

    方法二

    在django的views.py文件中编写接口,返回static资源的url(进行处理)

    # views.py
    def getFiles(request):
        if request.method == "GET":
            return HttpResponse(open('static/imgs/test.png', 'rb'), content_type='images/png')
    
    # urls.py
    ...
    re_path('getFiles', views.getFiles),
    ...
    

    此时在uni-app中即可成功下载文件:

    // uni-app
    uni.downloadFile({
        url:  "http://172.1xx.x.x:8000/IM/getFiles",
        success: (res) => {...}
    })
    
    tips:

    相关文章

      网友评论

          本文标题:请求django中static目录下的静态资源 | 解决跨域

          本文链接:https://www.haomeiwen.com/subject/yuaemqtx.html