Я думаю, что проблема в том, что вы пропустили POST
из вашего ответа ОПЦИИ.С CORS вам нужно будет определиться, какие методы http приемлемы.С учетом вышесказанного вам необходимо обновить предварительный запрос до:
# Set CORS headers for the preflight request
if request.method == 'OPTIONS':
# Allows GET requests from any origin with the Content-Type
# header and caches preflight response for an 3600s
headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': '3600'
}
return ('', 204, headers)
# Set CORS headers for the main request
headers = {
'Content-Type':'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Content-Type',
}
# END CORS
return (res, 200, headers)
В качестве альтернативы вы можете установить значение:
'Access-Control-Allow-Methods': '*'
Если вы нечто касается безопасности.
Кроме того, причина того, что вы не получаете эти ошибки через POSTMAN, связана с характером запроса - все современные браузеры перехватывают ваш запрос и проверяют, совпадают ли источники (домен,порт, протокол и т. д.), если они этого не делают, перед пунктом назначения делается запрос перед полетом (OPTIONS
), чтобы убедиться, что все в порядке.Сайты, такие как POSTMAN, и программное обеспечение, такое как Fiddler, не запускаются из браузера и отправляются без каких-либо проверок.