Это мой код:
@app.route('/hello', methods=["POST"])
def hello():
resp = make_response()
resp.headers['Access-Control-Allow-Origin'] = '*'
return resp
Однако когда я делаю запрос из браузера на свой сервер, я получаю эту ошибку:
XMLHttpRequest cannot load http://localhost:5000/hello.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я тоже пробовал этот подход, установив заголовки ответа «после» запроса:
@app.after_request
def add_header(response):
response.headers['Access-Control-Allow-Origin'] = '*'
return response
Никаких кубиков. Я получаю ту же ошибку. Есть ли способ просто установить заголовки ответа в функции маршрута? Что-то вроде этого было бы идеально:
@app.route('/hello', methods=["POST"])
def hello(response): # is this a thing??
response.headers['Access-Control-Allow-Origin'] = '*'
return response
но я не могу найти способ сделать это. Пожалуйста помоги.
РЕДАКТИРОВАТЬ
если я скручиваю URL-адрес с запросом POST следующим образом:
curl -iX POST http://localhost:5000/hello
Я получаю такой ответ:
HTTP/1.0 500 INTERNAL SERVER ERROR
Content-Type: text/html
Content-Length: 291
Server: Werkzeug/0.9.6 Python/2.7.6
Date: Tue, 16 Sep 2014 03:58:42 GMT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
Любые идеи?
Эта работа для меня
источник
return Response(headers={'Access-Control-Allow-Origin':'*'})
которое мне кажется более понятным.Вот так я добавлял заголовки в мое фляжное приложение, и он отлично работал
источник
Мы можем установить заголовки ответов в приложении Python Flask, используя контекст приложения Flask, используя
flask.g
Этот способ установки заголовков ответов в контексте приложения Flask
flask.g
является потокобезопасным и может использоваться для установки настраиваемых и динамических атрибутов из любого файла приложения, это особенно полезно, если мы устанавливаем настраиваемые / динамические заголовки ответа из любого вспомогательного класса, который может также можно получить доступ из любого другого файла (например, промежуточного программного обеспечения и т. д.), онflask.g
является глобальным и действителен только для этого потока запроса.Скажите, если я хочу прочитать заголовок ответа из другого вызова api / http, который вызывается из этого приложения, а затем извлечь любой и установить его в качестве заголовков ответа для этого приложения.
Пример кода: файл:
helper.py
файл:
middleware.py
Вызов промежуточного программного обеспечения из основного класса
файл :
main.py
источник