Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
comprobar si las URL tienen el mismo origen

Tengo una función que se ejecuta antes de cada solicitud de API para verificar si la solicitud proviene de un origen válido.

Tengo una matriz de orígenes válidos.

 const whitelist = [ 'a.com', 'b.co.uk' ] const validOrigin = str => { const url = new URL( str ) return whitelist.includes( url.host ) } console.log(validOrigin('https://www.a.com'))

Devuelve falso debido a la www. No quiero simplemente agregar una copia con www. a la matriz de orígenes válidos. Me gustaría una forma que cubra esto y todo lo demás inesperado.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Teniendo en cuenta que, por las reglas , www.example.com y example.com son orígenes diferentes :

Si desea hacer coincidir cualquier origen en el mismo dominio o un subdominio de los dominios en la lista blanca, debe:

  • Retire el esquema y el puerto, lo que ya está haciendo
  • Busque una coincidencia exacta, lo que ya está haciendo
  • Busque una coincidencia que termine en . seguido de la cadena (para detener la coincidencia de third-party-hacker-a.com )

Entonces algo como:

 const validOrigin = str => { const url = new URL( str ) const host = url.host; return whitelist.some( element => { if (element === host) return true; return element.endsWith(`.${host}`); } ) }
about 4 years ago · Juan Pablo Isaza Report

0

La función Array.prototype.includes solo acepta el valor a buscar y busca una coincidencia exacta.

Necesitará usar una función que acepte una devolución de llamada para probar los elementos, por ejemplo, la función Array.prototype.findIndex .

Como menciona en los comentarios, también deberá cambiar la whitelist para poder excluir dominios cuyo nombre termine con uno de sus dominios válidos.

 const whitelist = [ /(^|\.)a\.com$/i, /(^|\.)b\.co\.uk$/i ]; const validOrigin = str => { const url = new URL(str); const index = whitelist.findIndex(el => el.test(url.host)); return index !== -1; }; document.querySelectorAll("#tests > li").forEach(li => { const str = li.dataset.value; const result = validOrigin(str); li.textContent = `${str} = ${result}`; });
 <ul id="tests"> <li data-value="http://a.com/foo"></li> <li data-value="http://www.a.com/foo"></li> <li data-value="http://dev.a.com/foo"></li> <li data-value="http://banana.com/foo"></li> <li data-value="http://a.com.b.ru/foo"></li> </ul>

about 4 years ago · Juan Pablo Isaza Report

0

puedes intentar algo como esto

 str = str.replace( new RegExp("((http)(s)?:\/\/)?(www.)?","gm"),"")

esto eliminará la primera parte de la url

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!