Я создал веб-сервер с использованием библиотек python и cherrypy. Запросы GET и POST работают нормально, если я пытаюсь сделать их, используя python или Postman.
К сожалению, у меня 500 (Внутренняя ошибка сервера), когда я пытаюсь сделать запрос POST, используя javascript или jquery. Я пробовал все запросы POST, которые я нашел в stackoverflow.
Это основной мой веб-сервер.
python ws.py
if __name__== '__main__' :
conf = {
'/': {
'request.dispatch' : cherrypy.dispatch.MethodDispatcher(),
'tools.response_headers.on': True,
'tools.response_headers.headers': [('Access-Control-Allow-Origin', '*'),
("Access-Control-Allow-Methods", "GET, POST"),
("Access-Control-Allow-Headers", "Content-Type, Accept"),
("Access-Control-Max-Age", "1728000"),
('Content-Type: application/json; charset=UTF8'),
],
}
}
cherrypy.tree.mount(ImageRetrievalWS(),'/',conf)
cherrypy.config.update({'server.socket_host' : '127.0.0.1'})
cherrypy.config.update({'server.socket_port' : 8001})
cherrypy.engine.start()
cherrypy.engine.block()
javascript-скрипт, в котором я пробовал все виды почтовых запросов:
HTML script
var urll = "http://127.0.0.1:8001/selectedfiles"
var http = new XMLHttpRequest();
var params = "hello";
$.ajax(
{ url : urll,
data : JSON.stringify({"selectedfiles": "hello"}), type : 'POST', dataType : 'json',
success : function(wsQuery) {alert("ok"); }
});
$.ajax(urll, {
type: "POST",
dataType: 'json',
data: JSON.stringify({"selectedfiles": "hello"}),
success: function(result) {
console.log(result);}
});
http.open('POST', urll, true);
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
$.post(urll, data = JSON.stringify({ selectedfiles: 'hello' }), function (result) {
alert('OK');
}, 'json');
</script>
Итак, я полагаю, что проблема в ws.py, но я не понимаю, что мне нужно добавить, чтобы это работало. С другой стороны, запрос работает, если я делаю это из другого скрипта Python или с помощью Postman.
Спасибо.