Django Rest Framework/Angular JS Preflight 选项

Posted

技术标签:

【中文标题】Django Rest Framework/Angular JS Preflight 选项【英文标题】:Django Rest Framework/Angular JS Preflight options 【发布时间】:2014-11-01 09:43:15 【问题描述】:

我的应用程序将 DRF 用于后端并使用 AngularJS 使用 API。 对于某些特定的 API,我面临以下问题。

XMLHttpRequest cannot load `http://localhost:8000/someurl`. The request was redirected to `'http://localhost:8000/someurl/'`, which is disallowed for cross-origin requests that require preflight.

我正在使用 django-cors-headers 并且我已经确保了我的设置。

所有人都允许使用 Cors 来源。 Append_slash 设置为 True。 CORS_PREFLIGHT_MAX_AGE 已设置。 cors 标头中间件已正确设置。

前端服务器在 localhost:3000 上运行。 有什么帮助吗? 谢谢。

【问题讨论】:

【参考方案1】:

我认为我对这个问题有一个合理的发现。可能有一天会对其他人有所帮助。 AngularJS $resource 从 URL 中删除“/”。并且 URL 'http://localhost:8000/someURL' 的预检 OPTIONS 请求被重定向到 'http://localhost:8000/someURL/',因为默认情况下是 django APPENDS_SLASH。因此预检请求被重定向。

要么我需要强制 $resource 不从 URL 中删除“/”,要么强制 django 到 APPEND_SLASH = False 并相应地更新我的 URL。

【讨论】:

感谢您的回答对我有用。将 stripTrailingSlashes: false 添加到 $resource 配置中,一切都很好。

以上是关于Django Rest Framework/Angular JS Preflight 选项的主要内容,如果未能解决你的问题,请参考以下文章

怎么安装django rest framework

为啥 django-rest-framework 不显示 OneToOneField 数据 - django

Django + AngularJS:没有使用普通 URL 和视图的 Django REST 框架的类 REST 端点?

Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证

django rest framework中文介绍

Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers