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 不显示 OneToOneField 数据 - django
Django + AngularJS:没有使用普通 URL 和视图的 Django REST 框架的类 REST 端点?
Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证
Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers