Ошибка "Нет заголовка Access-Control-Allow-Origin" в запросе Flask POST [CORS]
Я получаю следующую ошибку CORS при выполнении запроса POST к серверу фляги из углового приложения:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Настольный сервер:
from flask import Flask, request
from flask.ext.cors import CORS
app = Flask(__name__)
cors = CORS(app)
@app.route('/testPost', methods=['POST'])
def testPost():
phone = request.values.get('phone')
return phone
if __name__ == '__main__':
app.run(debug=True)
Я попробовал комбинации различных заголовков ответа без удачи. Предварительный запрос OPTIONS возвращает 200 ok со следующими заголовками
Отклик:
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Allow: POST, OPTIONS
Access-Control-Allow-Origin: http://localhost:7000
Access-Control-Allow-Headers: accept, content-type
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Content-Length: 0
Server: Werkzeug/0.11.3 Python/2.7.11
Date: Wed, 18 May 2016 00:58:10 GMT
Запрос:
OPTIONS /testPost HTTP/1.1
Host: localhost:5000
Connection: keep-alive
Cache-Control: max-age=0
Access-Control-Request-Method: POST
Origin: http://localhost:7000
Access-Control-Request-Headers: accept, content-type
Accept: */*
Referer: http://localhost:7000/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
1 ответ
Ошибка была в моем типе возврата метода testPost(). Метод должен возвращать JSON-ответ.
from flask import Flask, request
from flask.ext.cors import CORS
app = Flask(__name__)
cors = CORS(app)
@app.route('/testPost', methods=['POST'])
def testPost():
phone = request.json['phone']
return phone
if __name__ == '__main__':
app.run(debug=True)