相关疑难解决方法(0)

如何在django中设置自定义中间件

我正在尝试创建中间件,以便可选地将kwarg传递给满足条件的每个视图.

问题是我找不到如何设置中间件的示例.我见过的类覆盖了我想要的方法,process_view:

Class CheckConditionMiddleware(object):  
    def process_view(self, request):  

        return None  
Run Code Online (Sandbox Code Playgroud)

但是我把这个课程放在哪里?我是否创建了一个中间件应用程序并将此类放在其中,然后在settings.middleware中引用它?

python django django-middleware django-views

70
推荐指数
3
解决办法
4万
查看次数

Django CORS问题:不允许access-control-allow-origin

我收到以下错误:

Access to XMLHttpRequest at 'http://127.0.0.1:8000/' from origin 'http://localhost:62570' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.

我尝试添加django-cors-headers中间件,并且CORS_ALLOW_ALL_ORIGINS = True我也做了ALLOWED_HOSTS = ['*']但仍然遇到相同的 CORS 错误。我在 NestJS 中遇到了同样的错误,但添加后app.enableCors();它得到了解决。

这是我的settings.py文件:

from pathlib import Path

BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
DEBUG = True

ALLOWED_HOSTS = ['*']

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'rest_framework',
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware', …
Run Code Online (Sandbox Code Playgroud)

python django cors django-rest-framework django-cors-headers

7
推荐指数
1
解决办法
5773
查看次数

托管在同一服务器上的 Django 和 React 的 CORS 问题

我的 Django Rest Framework 和 React 应用程序在同一台服务器上存在 CORS 问题。我正在运行带有 Ubuntu 18 机器和 NGINX 的 Vagrant(我假设这个问题会转化为 DigitalOcean)如果我提供了太多信息,我提前道歉。DRF 使用 Supervisor,Gunicorn 使用端口 8000。我使用 create-react-app 创建了我的 React 应用程序。然后我用来npm run build创建静态文件。

NGINX 设置:

反应会议

server {
    listen 8080;
    server_name sandbox.dev;

    root /var/sites/sandbox/frontend/build;
    index index.html;
    client_max_body_size 4G;
    location / {
        try_files $uri $uri/ /index.html;
    }
Run Code Online (Sandbox Code Playgroud)

姜戈会议

upstream sandbox_server {
    server unix:/var/tmp/gunicorn_sanbox.sock fail_timeout=0;
}
server {
    listen 8000;
    server_name api.sandbox.dev;
    ...
    location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    if (!-f $request_filename) …
Run Code Online (Sandbox Code Playgroud)

django nginx cors vagrant reactjs

6
推荐指数
1
解决办法
6056
查看次数

如何解决我的Django API的CORS问题?

我无法在Django API中解决CORS问题。调用此API时,出现错误:

从源' http:// localhost '的' http:// localhost:8000 / '处获取的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。

为了启用CORS,我做pip install django-cors-headers了以下代码,并将其添加到settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
]

MIDDLEWARE_CLASSES = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CORS_ORIGIN_WHITELIST = [
    'localhost:80',
    'localhost:8000',
    '127.0.0.1:8000'
]
Run Code Online (Sandbox Code Playgroud)

我应该说我在Docker上运行我的项目。这是docker-compose.yml

version: '2'

services:
  django-docker:
    build:
      context: .
      dockerfile: Dockerfile.django
    container_name: my.django
    image: my-django
    ports:
      - 8000:8000

  webapp-docker:
    build:
      context: .
      dockerfile: Dockerfile.webapp
    container_name: my.webapp
    image: my-web
    ports: …
Run Code Online (Sandbox Code Playgroud)

python django cors docker

5
推荐指数
2
解决办法
2321
查看次数

使用React调用REST API时出现CORS错误

我使用此URL http://192.168.33.10:8002/scenarios/创建了一个可以使用django-rest-framework创建的restful api,我正在创建一个React应用程序来调用api并消耗其数据.

我正在使用fetch来调用api

componentWillMount: function(){
 this.setState({Problemstyle: this.props.Problemstyle})
 fetch('http://192.168.33.10:8002/scenarios/')
 .then(result=>result.json())
 .then(result=> {
   this.steState({items:result})
 })
 },
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序时,我的浏览器出错

Fetch API无法加载http://192.168.33.10:8002/scenarios/.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源" http://192.168.33.10:8001 ".如果不透明响应满足您的需求,请将请求的模式设置为"no-cors"以获取禁用CORS的资源.

我不确定如何解决这个问题,因为我刚刚开始使用React

django rest cors django-rest-framework reactjs

4
推荐指数
2
解决办法
3137
查看次数