Позвольте мне начать с того, что я не знаю Python, у меня был, возможно, 1 день, проходящий уроки по Python. Ситуация такая. У меня есть угловое приложение, в котором есть приложение Python, размещенное с Apache на виртуальной машине в iframe. Я не писал приложение на python, но другой разработчик написал мне конечную точку, где я должен иметь возможность публиковать сообщения из своего углового приложения.
Разработчик, который создал конечную точку Python, говорит, что с моим запросом что-то не так, но я уверен, что в этом нет ничего плохого. Я почти на 100% уверен, что проблема в том, что в ответе нет заголовков CORS и / или ответ не настроен для ответа на метод OPTIONS. Ниже приведена полная информация о конечной точке Python:
import os, site, inspect
site.addsitedir(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))+"/../")
import json
from datetime import datetime
import pymongo
from Config import Config
def application(environ, start_response):
response = environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
if response:
json_response = json.loads(response)
document = {
'payment_id': json_response['payment_id'],
'log': json_response['log'],
'login_id': json_response['login_id'],
'browser': environ.get('HTTP_USER_AGENT', None),
'ip_address': environ.get('REMOTE_ADDR', None),
'created_at': datetime.utcnow(),
}
client = pymongo.MongoClient(Config.getValue('MongoServer'))
db = client.updatepromise
db.PaymentLogs.insert(document)
start_response('200 OK', [('Content-Type', 'application/json')
return '{"success": true}'
start_response('400 Bad Request', [('Content-Type', 'application/json')])
return '{"success": false}'
Я попытался сделать это следующим образом: я добавил в обе функции start_response больше заголовков, чтобы код теперь выглядел следующим образом:
start_response('201 OK', [('Content-Type', 'application/json',
('Access-Control-Allow-Headers','authorization'),
('Access-Control-Allow-Methods','HEAD, GET, POST, PUT, PATCH, DELETE'),
('Access-Control-Allow-Origin','*'),
('Access-Control-Max-Age','600'))])
Не: я сделал это сначала с ответом 200 и 400, и вообще не увидел никаких изменений в ответе, затем, черт возьми, я решил изменить 200 на 201, это также сделало Я не подозреваю, что этот код по какой-то причине даже не запускается.
Пожалуйста, помогите, Python newb здесь.
Приложение, я подумал, что это поможет, вот как выглядят заголовки в ответе:
General:
Request URL: http://rpc.local/api/payment_log_api.py
Request Method: OPTIONS
Status Code: 200 OK
Remote Address: 10.1.20.233:80
Referrer Policy: no-referrer-when-downgrade
Response Headers:
Allow: GET,HEAD,POST,OPTIONS
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/x-python
Date: Fri, 27 Apr 2018 15:18:55 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.18 (Ubuntu)
Request Headers:
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Access-Control-Request-Headers: authorization,content-type
Access-Control-Request-Method: POST
Connection: keep-alive
Host: rpc.local
Origin: http://10.1.20.61:4200
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36