Si paso una cadena como "testabc#", se rompe en algún lugar del camino hacia el controlador. No estoy seguro de por qué el # me está causando el problema. ¿Es este un trabajo clave en JavaScript que causa el problema? He probado todos los demás personajes especiales diferentes y funcionan bien. ¿Alguien más se ha encontrado con este problema?
`/api/Controller/UpdatePassword?currentPassword=${currentPassword.value}&newPassword=${newPassword.value}&confirmPassword=${confirmPassword.value}`,Anchor (#) es una característica de URL llamada fragmento y se usa para referencias de páginas internas. El uso de un signo de interrogación (?) y ampersand (&) puede romper su solicitud HTTP como lo hace un ancla porque todas estas cosas son características de URL y cambia el comportamiento de la URL.
Para evitar este tipo de error, debe usar encodeURI() o encodeURIComponent() como se muestra a continuación:
con encodeURIComponent() :
var url = `/api/Controller/UpdatePassword?currentPassword=${encodeURIComponent(currentPassword.value)}&newPassword=${encodeURIComponent(newPassword.value)}&confirmPassword=${encodeURIComponent(confirmPassword.value)}` con encodeURI() :
var url = encodeURI(`/api/Controller/UpdatePassword?currentPassword=${currentPassword.value}&newPassword=${newPassword.value}&confirmPassword=${confirmPassword.value}`)# en una url es un carácter especial que indica un "fragmento", lo que significa una parte especial de la url que es una especie de ancla en la página. Es por eso que rompe tu código. ? Y & también son especiales, al igual que algunos otros.
Debe codificar en URL los datos que pasa en la URL.
Intente usar encodeURI() en la cadena de URL antes de buscar, como:
var url = `/api/Controller/UpdatePassword?currentPassword=${currentPassword.value}&newPassword=${newPassword.value}&confirmPassword=${confirmPassword.value}` encodeURI(url)