为了账号安全,请及时绑定邮箱和手机立即绑定

跨源请求被阻止 Django 和 React

跨源请求被阻止 Django 和 React

慕斯709654 2024-01-18 14:49:00
我安装了pip install django-cors-headers还是不行添加到settings.py文件中INSTALLED_APPS = [    ...    'corsheaders',    ...]MIDDLEWARE = [    ...    'corsheaders.middleware.CorsMiddleware',    'django.middleware.common.CommonMiddleware',    ...]Django 休息框架
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

我在项目解决方案中也遇到了同样的问题,我得到的是


将 corsheaders.middleware.CorsMiddleware 放在顶部


MIDDLEWARE = [

'corsheaders.middleware.CorsMiddleware',

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

..........

..........

]

ALLOWED_HOSTS = ['*']


在settings.py底部添加


 CORS_ORIGIN_ALLOW_ALL = True

根据文档, CorsMiddleware 应该放置在尽可能高的位置,特别是在任何可以生成响应的中间件之前,例如 Django 的 CommonMiddleware 或 Whitenoise 的 WhiteNoiseMiddleware。如果不是之前,它将无法将 CORS 标头添加到这些响应中。


另外,如果您使用 CORS_REPLACE_HTTPS_REFERER,则应将其放置在 Django 的 CsrfViewMiddleware 之前。


查看完整回答
反对 回复 2024-01-18
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

通常,对于此类错误,您需要settings.py更新django-cors-headers:


# update backend/server/server/settings.py

# ...

INSTALLED_APPS = [

    #...

    'corsheaders', # add it here

    #...

]


# define which origins are allowed

CORS_ALLOWED_ORIGINS = [

    "http://localhost:3000",

    "http://127.0.0.1:3000"

]


# add to middleware

MIDDLEWARE = [

    #...

    'corsheaders.middleware.CorsMiddleware',

    'django.middleware.common.CommonMiddleware',

    #...

]

有时您还需要设置ALLOWED_HOSTS=["127.0.0.1"]或使用其他地址(您也可以尝试使用“*”,但仅用于调试)。


另请尝试在网络浏览器中清除缓存的情况下运行测试。


如果这没有帮助,请提供有关您的项目设置的更多详细信息。


查看完整回答
反对 回复 2024-01-18
  • 2 回答
  • 0 关注
  • 24 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信