Mod_wsgi и Apache. Где требуется Access-Control-Allow-Origin?

Я отправляю данные через JS на сервер apache2, работающий на mod_wsgi через:

$.ajax({ method: "POST", url: "https://annotatie01.io.tudelft.nl/app", data: "test-data", success: function(response) { console.log(response) } }); 

Если файл .wsgi, который я отправляю, выглядит следующим образом:

 def application(environ, start_response): status = '200 OK' length = int(environ.get('CONTENT_LENGTH', '0')) data = environ['wsgi.input'].read(length) response_headers = [('Content-type', '*'), ('Content-Length', str(len(data)))] start_response(status, response_headers) return data 

Когда я пытаюсь сохранить, используя что-то вроде f = open (), или когда я пытаюсь получить доступ к базе данных SQL:

 import sqlite3 def application(environ, start_response): status = '200 OK' length = int(environ.get('CONTENT_LENGTH', '0')) data = environ['wsgi.input'].read(length) conn = sqlite3.connect('/var/database/material3.db') c = conn.cursor() c.execute('SELECT image from image_table limit 1') data = c.fetchall() response_headers = [('Content-type', '*'), ('Content-Length', str(len(data)))] start_response(status, response_headers) return data 

Я получил No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. XMLHttpRequest Error> No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

Я попробовал добавить Header set Access-Control-Allow-Origin "*" на httpd.conf, а также в основную конфигурацию Apache, но это не сработало. Я всегда пытался добавить ('Access-Control-Allow-Origin','*') в response_headers .

Как (и где) включить enable-control-allow-origin, чтобы я мог получить доступ к базе данных sqlite или написать что-то, используя f = open ().

edit: Мой файл httpd.conf.

  <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> <VirtualHost *:443> Header set Access-Control-Allow-Origin "*" ServerName annotatie01.io.tudelft.nl:443 SSLEngine on SSLCertificateFile /var/www/experiment/CSR/annotatie01_io_tudelft_nl.crt SSLCertificateKeyFile /var/www/experiment/CSR/annotatie01_io_tudelft_nl.key WSGIScriptAlias /app /var/www/experiment/experiment/py/mod_wsgi-test/myapp.wsgi DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Header set Access-Control-Allow-Origin "*" Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all LoadModule wsgi_module modules/mod_wsgi.so-2.7 </Directory> </VirtualHost> <VirtualHost *:80> Header set Access-Control-Allow-Origin "*" DocumentRoot /data_nfs/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /data_nfs/www> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost> 

И мой apache2.conf:

 SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL SSLProtocol TLSv1 Mutex file:${APACHE_LOCK_DIR} default PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} HostnameLookups Off ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf Include ports.conf <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> AccessFileName .htaccess <FilesMatch "^\.ht"> Require all denied </FilesMatch> Header set Access-Control-Allow-Origin "*" LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %O" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent IncludeOptional conf-enabled/*.conf Include /etc/apache2/httpd.conf 

One Solution collect form web for “Mod_wsgi и Apache. Где требуется Access-Control-Allow-Origin?”

С помощью Грэма Дамплтона мне удалось получить ответ.

Я загружал модуль в httpd.conf и в /mods-available/wsgi.load, что приводило к странному поведению.

Удаление LoadModule wsgi_module modules/mod_wsgi.so-2.7 из httpd.conf заставило модуль загружаться правильно. Затем header был загружен из httpd.conf

изменить: добавленные комментарии

  • AWS Elastic Beanstalk - время ожидания скрипта перед возвратом заголовков: application.py
  • Запустите проект Django внутри wordpress (на suburl wordpress с помощью Apache и mod_wsgi)
  • Какова цель API-интерфейса суб-интерпретатора в CPython?
  • Django / mod_wsgi OSError: Разрешение отклонено: 'static', когда DEBUG = OFF
  • ImportError: импорт по имени файла не поддерживается. (WSGI)
  • WSGI (кэширование результата mysql до изменения кода скрипта). (хотите остановить это кеширование)
  • Как заменить / обновить версию библиотеки expat, используемую Apache?
  • UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xc5
  •  
    Interesting Posts for Van-Lav

    Есть ли способ получить argparse.ArgumentParser.parse_args (), чтобы не выходить из аргументов?

    Загрузите массив numpy в C из файла, который был сохранен с помощью numpy.save (…)

    Как исправить одну строку юникода, например «\ u8bf8 \ u845b \ u4eae» в python?

    Администратор Django: упорядочивается по соответствующему внешнему ключу

    Добавить число для установки

    Поиск нескольких областей интереса в массиве

    Подсчитав наибольшую последовательность четных чисел

    Как эта базовая структура pygame?

    Код Python для Bluetooth вызывает ошибку после того, как мне пришлось перезагрузить адаптер

    UnicodeDecodeError: кодек ascii не может декодировать байт 0x87 в позиции 10: порядковый номер не в диапазоне (128)

    python pandas: удалить столбец df, если условие

    Как определить, является ли файл потомком данного каталога?

    Запустите команду linux system в качестве суперпользователя, используя скрипт python

    Обрезка строки в Python

    Как удалить проект PyCharm?

    Python - лучший язык программирования в мире.