相关疑难解决方法(0)

为什么nginx会响应任何域名?

我有nginx并运行Ruby/Sinatra应用程序,一切都很好.但是,我现在正尝试从同一台服务器运行第二个应用程序,我注意到一些奇怪的东西.首先,这是我的nginx.conf:

pid /tmp/nginx.pid;
error_log /tmp/nginx.error.log;

events {
  worker_connections 1024;
  accept_mutex off;
}

http {
  default_type application/octet-stream;
  access_log /tmp/nginx.access.log combined;

  sendfile on;
  tcp_nopush on;
  tcp_nodelay off;

  gzip on;
  gzip_http_version 1.0;
  gzip_proxied any;
  gzip_min_length 500;
  gzip_disable "MSIE [1-6]\.";
  gzip_types text/plain text/xml text/css
             text/comma-separated-values
             text/javascript application/x-javascript
             application/atom+xml;

  upstream app {
    server unix:/var/www/app/tmp/sockets/unicorn.sock fail_timeout=0;
  }

  server {
    listen 80;
    client_max_body_size 4G;
    server_name FAKE.COM;

    keepalive_timeout 5;

    root /var/www/app/public;

    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) {
        proxy_pass http://app; …
Run Code Online (Sandbox Code Playgroud)

nginx

133
推荐指数
7
解决办法
10万
查看次数

Django CORS CSRF_TRUSTED_ORIGINS 不起作用

我正在开发一个 DRF(Django 项目),其中我的后端 django Rest api 托管在服务器上,我的 ReactJS 前端也托管在同一台服务器上。我已确保遵循我在 ff 文档中读到的所有所需步骤:

我添加了 corsheaders INSTALLED_APPS ,并且 settings.py 中的中间件是:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Run Code Online (Sandbox Code Playgroud)

我在settings.py中的CORS设置是:

CORS_ALLOW_ALL_ORIGINS=False

CSRF_TRUSTED_ORIGINS = [
    "https://samplefrontend.tech",
]

CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]

CORS_ALLOW_HEADERS = [
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
]
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用 Postman 从本地 PC(而不是前端服务器)执行一些请求(例如获取令牌)时,其余 api 返回刷新和访问令牌。对于其他 HTTP 请求也是如此,我可以使用 postman 自由地执行这些请求并获得响应。

我需要的是只接受来自前端应用程序(reactjs)的请求。谁可以帮我这个事?

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

5
推荐指数
1
解决办法
3633
查看次数