Python Flask-cors не возвращает в ответ ни один из заголовков cors

Я использую Flask-Cors==3.0.3Вот как я настраиваю его для своего приложения, где включен интерфейс localhost:9000 на apache, пока бэкэнд включен localhost:8080:

app     = Flask(_name_, template_folder="www/templates", static_folder ="www/static" )
app.config['API_UPLOAD_FOLDER'] = config.API_UPLOAD_FOLDER
app.config['SMOKE_UPLOAD_FOLDER'] = config.SMOKE_UPLOAD_FOLDER

app.config['MONGODB_SETTINGS'] = {
    'db': config.MONGO_DBNAME,
    'host': config.MONGO_URI
}

app.config['CORS_HEADERS'] = 'Content-Type, auth'
app.config['CORS_RESOURCES'] = {r"/apis/*":{"origins":"http://localhost:9000"}}
app.config['CORS_METHODS'] = "GET,POST,OPTIONS"
app.config['CORS_SUPPORTS_CREDENTIALS'] = True

CORS(app)

и моя просьба выглядит так:

OPTIONS /apis/register HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Origin: http://localhost:9000
Connection: close

и ответ:

HTTP/1.1 200 OK
Server: nginx/1.10.1 (Ubuntu)
Date: Tue, 02 Jan 2018 08:52:29 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: close
Allow: POST, OPTIONS

Я также пытаюсь сделать это так, как указано выше, и результаты остались прежними... в ответе нет заголовков CORS:(

Cors = CORS(app, resources={r"/apis/*": {"origins": "localhost:9000"}}, supports_credentials=True, methods="GET, POST, OPTIONS", allow_headers="Content-type, auth")

Здесь я что-то не так делаю? Пытался больше вещей здесь, как изменение этого:

app.config['CORS_HEADERS'] = 'Content-Type, auth'
app.config['CORS_RESOURCES'] = {r"/apis/*":{"origins":"http://localhost:9000"}}
app.config['CORS_METHODS'] = "GET,POST,OPTIONS"
app.config['CORS_SUPPORTS_CREDENTIALS'] = True

к этому:

app.config['CORS_HEADERS'] = ['Content-Type, auth']
app.config['CORS_RESOURCES'] = {r"/apis/*":{"origins":"http://localhost:9000"}}
app.config['CORS_METHODS'] = ["GET,POST,OPTIONS"]
app.config['CORS_SUPPORTS_CREDENTIALS'] = True

но результат тот же:(

То, что, казалось, работало, хотя использовало декоратор вместо глобальных настроек уровня приложения как это:

@cross_origin(supports_credentials=True, methods=["GET, POST, OPTIONS"], headers=["content-type, auth"])

1 ответ

В исходном коде для колбы есть комментарий:

"Если в источниках есть подстановочный знак, даже если для send_wildcard задано значение" Ложь ", просто отправьте подстановочный знак. Если для support_credentials установлено значение True, поскольку это запрещено спецификацией.."

Они ссылаются на спецификацию здесь: http://www.w3.org/TR/cors/ которой явно указано "Примечание. Строка"*"не может использоваться для ресурса, который поддерживает учетные данные".

Таким образом, решение, по-видимому, заключается в том, чтобы не использовать подстановочный знак.

Другие вопросы по тегам