Error 404 en una aplicación antigua que ha funcionado por años.
SimplifyConnections.appspot.com ha funcionado durante años, pero de repente muestra errores 404 que impiden la lectura de los pines de mapa existentes y de los nuevos pines de mapa. Este nuevo fallo ocurre tanto en la aplicación implementada como en el SDK local. Puedes experimentar en el enlace creando tu propio pin de mapa y parecerá que es aceptado, pero cuando refrescas el enlace, tu pin de mapa desaparece. Solo mi registro sugiere que hay un error (ver abajo).
He intentado crear un código simplificado que fallaría de la misma manera, pero mi código simplificado falla por otro error que no sé cómo circumnavegar: 405 Método no permitido; El método POST está prohibido para este recurso. Pero creo que mi código abajo puede sugerir el error de routing que veo en el registro de la aplicación real.
Muestro a continuación el error de enrutamiento registrado que ahora obtengo.
INFO 2021-11-28 17:28:32,466 module.py:861] default: "GET /details.txt?place=Playground HTTP/1.1" 404 -
INFO 2021-11-28 17:29:18,511 module.py:861] default: "GET /details.txt?Action=add&lat=23.828670922688467&lng=-8.0815625&details=Brian&category=1&label=BS&place=Playground HTTP/1.1" 404 -
Mi pseudocódigo es el siguiente.
app.yaml
runtime: python27
threadsafe: true
handlers:
- url: /
script: mainapp.app
basic_scaling:
max_instances: 1
#idle_timeout: 5m
mainapp.py
import os
import logging
import webapp2
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
class MainPage(webapp2.RequestHandler):
def get(self):
logging.info("MainPage: ")
self.response.out.write("pin in")
template_values = {}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
class Details(webapp2.RequestHandler):
def get(self):
logging.info("Details: ")
action = self.request.get("Action", "Detail")
logging.info("action: %s " % (action))
self.response.out.write("pin in")
app = webapp2.WSGIApplication(
[('/', MainPage),
('/details.txt', Details)],
debug=True)
index.html (NB. En la cuarta línea desde el final, “post” debe cambiarse a “get” para evitar el error 405, pero el código real es un “post”.)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
</head>
<script>
function process(form) {
var details = escape(form.data.value);
var url = "details.txt?Action=add&name=" +name;
// ===== send the data to the server
downloadUrl(url, function(doc) {
if (doc)
{markerID = doc; }
});
alert("Your information has been processed.");
}
function downloadUrl(url, callback) {
var status = -1;
var request = createXmlHttpRequest();
if (!request) {
return false;
}
request.onreadystatechange = function() {
if (request.readyState == 4) {
try {
status = request.status;
} catch (e) {
// Usually indicates request timed out in FF.
}
if (status == 200) {
// next line altered: Text replaces XML
callback(request.responseText, request.status);
request.onreadystatechange = function() {};
}
}
}
request.open('GET', url, true);
try {
request.send(null);
} catch (e) {
changeStatus(e);
}
};
</script>
<body>
<form name="myForm" action="#" onsubmit="return process(this)" method="post">
Name: <input type="text" name="name">
<input type="submit" value="Submit">
</form>
</body>
No sé cómo mostrar el código real con brevedad, pero espero que el código de ejemplo proporcione suficiente información. No creo que la aplicación de mapeo sea relevante para este error, pero produce las solicitudes de enrutamiento reales que son manejadas por la llamada de retorno.
davy.ai
Problema con SimplifyConnections.appspot.com
El sitio web SimplifyConnections.appspot.com, que ha estado funcionando durante años, de repente comenzó a arrojar errores 404. Esto impide la lectura de los pines de mapa existentes y la creación de nuevos. El problema ocurre tanto en la aplicación implementada como en el SDK local.
Cuando un usuario crea un nuevo pin de mapa, parece ser aceptado. Sin embargo, al actualizar la página, el pin desaparece. La única indicación de un error está en el registro, que muestra un error de enrutamiento.
El código proporcionado aquí es una versión simplificada del código que falla de la misma manera. Sin embargo, el código simplificado encuentra un error diferente: un error 405 No se permite el método.
El seudocódigo proporcionado muestra que el error de enrutamiento parece ocurrir en la clase
Details
, que maneja las solicitudes a/details.txt
.En este momento, no está claro qué está causando el problema, pero parece estar relacionado con el enrutamiento. La aplicación de mapeo probablemente no sea relevante para el error, pero produce las solicitudes de enrutamiento que son manejadas por la devolución de llamada.
Se requiere una investigación adicional para identificar y resolver el problema.