RSS

El problema de la implementación simple del acceso remoto POST entre dominios javascript AJAX

fecha de lanzamiento:2022/11/12 11:06

De hecho, el problema es muy simple. Puede POSTear la solicitud y el servidor también devuelve una respuesta. Es el mecanismo de seguridad de los navegadores modernos que evita que el javascript local procese la respuesta. La consola de depuración muestra:

El acceso a XMLHttpRequest en 'https://ip.taotu.org/' desde el origen 'null' ha sido bloqueado por la política de CORS: no hay un encabezado 'Access-Control-Allow-Origin' en el recurso solicitado.

El problema es que si publica una página local, el navegador agregará automáticamente un encabezado, Origen: nulo, y si el servidor no agrega el encabezado de respuesta Access-Control-Allow-Origin: * al devolver la respuesta, o el encabezado el valor devuelto por el servidor es el mismo que el suyo. Si el Origen en el encabezado enviado no coincide, el cliente del navegador no entregará los datos de respuesta a javascript para su procesamiento, lo que generará un error.

Solución: De hecho, es muy simple, el código de back-end del servidor, solo necesitamos verificar si los datos de la publicación contienen la información especificada (equivalente a nuestra propia contraseña), en caso afirmativo, agregue Access-Control-Allow-Origin: *, para que el cliente pueda ser atendido correctamente.

El resumen es que las solicitudes entre dominios de AJAX no están permitidas de forma predeterminada y el navegador las prohibirá. El servidor juzga si la situación lo requiere y devuelve un encabezado de respuesta Access-Control-Allow-Origin:* y está bien.

Solicite el código javascript de la página:

var xhttp = nuevo XMLHttpRequest();

xhttp.onreadystatechange = función () {

if (this. readyState == 4 && this. estado == 200) {

documento.getElementById("queryipinfo").innerHTML =

esto.respuestaTexto;

}

};

xhttp.open("POST", "https://ip.taotu.org", verdadero);

xhttp.send('XX proviene de la solicitud remota XX'+ipdomain); //La cadena anterior agregada por el código clave es equivalente a nuestra propia contraseña

Código de procesamiento del lado del servidor:

Stream oPostData = Solicitud.InputStream;

byte[] bPostByte=nuevo byte[oPostData.Length];

oPostData.Read(bPostByte, 0, (int)oPostData.Length);

cadena sPostIPDomain=Encoding.UTF8.GetString(bPostByte);

bool bDesdeRemoto;

if (sPostIPDomain.StartsWith("XX proviene de la solicitud remota XX")) //código clave

{

bDesdeRemoto=verdadero;

sPostIPDomain = Regex.Replace(sPostIPDomain,"XX proviene de la solicitud remota XX(.*)", "$1");

*********Código omitido********

if (bFromRemote) //Código clave para juzgar si devolver el encabezado

Response.AddHeader("Access-Control-Allow-Origin", "*"); //código clave

Por cierto, la solución normal es configurar Access-Control-Allow-Origin: * en el encabezado de respuesta del servidor para permitir todas las solicitudes entre dominios, o Access-Control-Allow-Origin: https://taotu.org para permitir La solicitud enviada por el dominio especificado es utilizada por el desarrollo normal de la red, pero si el requisito es que el dominio de solicitud enviado localmente en el hogar sea una dirección IP y no sea una IP fija, esto no se puede resolver durante mucho tiempo, por lo que Usé esta solución simple.

Mi propósito es configurar un archivo .html estático en el navegador de la computadora local en casa y configurarlo como la página de inicio predeterminada.Cada vez que abro el navegador, envío una solicitud de publicación al servidor remoto a través de Java y regreso mi IP de red externa y mostrarlo. También hay algunos de mis enlaces a sitios web que uso con más frecuencia en la página estática, así como un motor de búsqueda tres en uno.

Esta es una pequeña página web que hice, bienvenido a visitarla o establecerla como página de inicio: https://ip.taotu.org

El problema de la implementación simple del acceso remoto POST entre dominios javascript AJAX

Comentarios de los usuarios

Agregar nuevo comentario

Código

188BET - La mejor plataforma de apuestas deportivas de Europa