【问题标题】:Django Rest Framework/Angular JS Preflight optionsDjango Rest Framework/Angular JS Preflight 选项
【发布时间】: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 上运行。 有什么帮助吗? 谢谢。

【问题讨论】:

    标签: django angularjs cors django-rest-framework django-cors-headers


    【解决方案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 配置中,一切都很好。
    猜你喜欢
    • 2014-10-03
    • 2019-02-08
    • 2023-03-14
    • 2013-06-25
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多