Error de JQuery extraño “código 501, mensaje Método no admitido OPCIONES”

Estoy aprendiendo el método JQuery Get. Arranco un servidor HTTP de Python:

(simplemente escribiendo el comando ” Python -m SimpleHTTPServer “).

Está bien probar este servidor web simplemente visitando “http: // localhost: 80″ en mi navegador web. Sin embargo, cuando escribo este javascript muy simple para visitar mi servidor web. Recibo un mensaje de error:

“código 501, mensaje Método no compatible (‘OPCIONES’)”

Utilizo la biblioteca jquery.xdomainajax.js que supone la solicitud cruzada de dominio JQuery

Aquí está mi código javascript:

     $(document).ready(function(){ u = 'http://localhost:80'; jQuery.get(u, function(res){ $("#data").html(res.responseText) }); });    

En realidad, si te cambio a cualquier otra URL, como “http://www.google.ca”. Funciona bastante bien. Pero no tengo idea de por qué no funciona para el servidor HTTP básico de Python. ¿Alguien puede ayudarme?

Related of "Error de JQuery extraño “código 501, mensaje Método no admitido OPCIONES”"

Lo que hago es escribir un HTTPRequestHandler personalizado. Agrego un método do-OPTIONS dentro de MyHandler para indicar al navegador que mi servidor es compatible con CORS. Esto se hace mediante el envío de encabezados Access-Control-Allow-Origin, Access-Control-Allow-Methods y Access-Control-Allow-Headers . Además, agrego una statement “self.send_header (‘Access-Control-Allow-Origin’, ‘*’)” en el método do_GET .

 class MyHandler(BaseHTTPRequestHandler): def do_OPTIONS(self): self.send_response(200, "ok") self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS') self.send_header("Access-Control-Allow-Headers", "X-Requested-With") def do_GET(self): self.send_response(200) self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write("Hello world!") self.connection.shutdown(1) 

Es posible que también deba agregar campos como “Tipo de contenido” a los encabezados permitidos.

 self.send_header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type") 

Parece una solicitud de verificación previa de CORS (https://developer.mozilla.org/En/HTTP_access_control)

Supongo que estás intentando acceder a un dominio / puerto diferente. Dependiendo de la solicitud, el navegador enviará una solicitud de verificación previa (una solicitud de OPCIÓN) para saber si el servidor acepta el conjunto de encabezados o el método HTTP que desea enviar en primer lugar. Si el servidor responde OK, el navegador enviará la solicitud real.

Parece que el servidor Python no implementa las solicitudes de OPCIONES, por lo tanto, el error.

Consejo: las herramientas de inspección de red (tcpdump, wireshark, ngrep …) ayudan mucho cuando se trata de solicitudes de http y / o errores de red.

Se parece a una solicitud de verificación previa de Intercambio de recursos entre orígenes (CORS).

Dado que CORS es una especificación que está fuertemente relacionada con la configuración de un servidor, recomiendo leer http://enable-cors.org/

Allí verá más sobre la implementación de CORS para su plataforma específica.