Wagtail、CORS 和 Django-Cors-Headers。如何启用 CORS 以便 AXIOS 可以访问端点

Posted

技术标签:

【中文标题】Wagtail、CORS 和 Django-Cors-Headers。如何启用 CORS 以便 AXIOS 可以访问端点【英文标题】:Wagtail, CORS and Django-Cors-Headers. How to enable CORS so that AXIOS can get to the endpoints 【发布时间】:2019-05-30 14:34:44 【问题描述】:

我正在尝试启用 Wagtail API,以便我可以在 Vue 中做一些令人兴奋的事情。但是,我已经按照在 Wagtail 中启用 API 的所有说明进行操作,并且没有提到 CORS。嗯,还不到一个段落。

我在所有项目中都使用 Django-Cors-Headers 并像往常一样进行设置,但由于某种原因,API 仍然不允许访问。

是否有人对如何使用 DJANGO-CORS-HEADERS 允许 CORS 连接到 Wagtail API 端点有任何建议?

【问题讨论】:

【参考方案1】:

This 可能会有所帮助。我不能谈论 wagtail,因为我没有在这个特定的项目中使用它,但是借助它并查看 django 2 中间件的语法,我想出了这个:

class CorsMiddleware(object):
    def __init__(self,get_response):
        self.get_response=get_response

    def __call__(self, request):
        print('test')
        response=self.get_response(request)
        response["Access-Control-Allow-Origin"] = "*"
        return response 

还要确保在将中间件插入到 settings.py 时,包括文件名以及模块名称和组件名称,即“AppName.FileName.CorsMiddleware”而不是链接中建议的内容放置“AppName.CorsMiddleware”的站点。也许错字也许是旧语法¯\_(ツ)_/¯

(* 可能有轻微的安全风险,但我只在开发中需要它,所以我并没有过多考虑)

【讨论】:

这真的很有帮助。谢谢。

以上是关于Wagtail、CORS 和 Django-Cors-Headers。如何启用 CORS 以便 AXIOS 可以访问端点的主要内容,如果未能解决你的问题,请参考以下文章

Wagtail:如何在管理员中设置计算字段(@property)标题

如何正确重命名 wagtail 页面模型

允许CREATE和PUBLISH但在Wagtail中禁用EDIT和DELETE

Wagtail ModelAdmin 只读

Wagtail:序列化页面模型

一个NASAGoogle都在用的开源CMS:wagtail