как установить заголовки запросов в колбе? (а не заголовки ответов) [дублировать]

Возможно, без использования хэшей, посмотрите на asual jQuery Address plugin :

Пример здесь .

Обратите внимание, что он будет использовать хэши в IE, для этого нет обходного пути.

53
задан dopatraman 16 September 2014 в 05:00
поделиться

3 ответа

Используйте make_response Flask как-то вроде

@app.route("/")
def home():
    resp = make_response("hello") #here you could use make_response(render_template(...)) too
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp

Из flask docs ,

flask.make_response (* args)

Иногда необходимо установить дополнительные заголовки в виде. Поскольку представлениям не нужно возвращать объекты ответа, но они могут возвращать значение, которое преобразуется в объект ответа самим фляксом, становится сложным добавлять к нему заголовки. Эта функция может быть вызвана вместо использования возврата, и вы получите объект ответа, который вы можете использовать для прикрепления заголовков.

8
ответ дан Devi 15 August 2018 в 15:22
поделиться

Эта работа для меня

from flask import Flask
from flask import Response

app = Flask(__name__)

@app.route("/")
def home():
    resp = Response("")
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp

if __name__ == "__main__":
    app.run()
2
ответ дан German Lopez 15 August 2018 в 15:22
поделиться

Вы можете сделать это довольно легко:

@app.route("/")
def home():
    resp = flask.Response("Foo bar baz")
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp

Посмотрите на flask.Response и flask.make_response ()

Но что-то говорит мне, что у вас есть другая проблема, потому что after_request тоже должен был правильно ее обработать.

EDIT Я заметил, что вы уже используете make_response, что является одним из способов сделать это , Как я уже говорил, after_request должен был работать. Попробуйте нажать конечную точку через завиток и посмотреть, что представляют собой заголовки:

curl -i http://127.0.0.1:5000/your/endpoint

Вы должны увидеть

> curl -i 'http://127.0.0.1:5000/'
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 11
Access-Control-Allow-Origin: *
Server: Werkzeug/0.8.3 Python/2.7.5
Date: Tue, 16 Sep 2014 03:47:13 GMT

Отметить заголовок Access-Control-Allow-Origin.

РЕДАКТИРОВАТЬ 2 Как я и предполагал, вы получаете 500, поэтому вы не настраиваете заголовок, как вы думали. Попробуйте добавить app.debug = True перед запуском приложения и повторите попытку. Вы должны получить некоторый результат, показывая вам основную причину проблемы.

Например:

@app.route("/")
def home():
    resp = flask.Response("Foo bar baz")
    user.weapon = boomerang
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp

Дает красиво отформатированную страницу ошибок html, причем это внизу (полезно для curl command)

Traceback (most recent call last):
...
  File "/private/tmp/min.py", line 8, in home
    user.weapon = boomerang
NameError: global name 'boomerang' is not defined
52
ответ дан sberry 15 August 2018 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: