Возможно, без использования хэшей, посмотрите на asual jQuery Address plugin :
Пример здесь .
Обратите внимание, что он будет использовать хэши в IE, для этого нет обходного пути.
Используйте 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)
Иногда необходимо установить дополнительные заголовки в виде. Поскольку представлениям не нужно возвращать объекты ответа, но они могут возвращать значение, которое преобразуется в объект ответа самим фляксом, становится сложным добавлять к нему заголовки. Эта функция может быть вызвана вместо использования возврата, и вы получите объект ответа, который вы можете использовать для прикрепления заголовков.
blockquote>
Эта работа для меня
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()
Вы можете сделать это довольно легко:
@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