No dia 23 de setembro de 2019 a VTEX descontinuará o suporte ao Cors do Master Data. Pode ser que algumas requisições de sua loja esteja utilizando o formato via CORS e precisam ser adaptados. Neste post iremos esclarecer o que é CORS e como se adequar a essa situação.
O que é CORS?
O CORS (Cross-Origin Resource Sharing) é um mecanismo de proteção dos navegadores quando precisam acessar informações em um domínio diferente do qual o usuário está navegando. Imagine um usuário acessando o domínio “vtex.com”. Se há algum recurso de javascript que precisa consultar uma informação em outro domínio, por exemplo “vtexday.com”, o navegador realizará um processo de validação para saber se o domínio “vtexday.com” permite consultas a partir do domínio “vtex.com”. O processo em si é basicamente uma requisição extra na mesma API configurada no javascript, porém, através do método OPTIONS.
O CORS não é um erro, mas sim um mecanismo de segurança do navegador que protege usuários contra Javascripts maliciosos e solicitações HTTP possivelmente danosas.
Quando o CORS é acionado?
O CORS é acionado quando um HTTP solicita .:
- … um domínio diferente (ex: vtex.com chama vtexcommercestable.com)
- … um subdomínio diferente (ex: vtex.com chama blog.vtex.com)
- … uma porta diferente (ex: vtex.com chama vtex.com:3001)
- … um protocolo diferente (ex: site em https://vtex.com chama http://vtex.com)
Por que a VTEX está descontinuando o suporte ao CORS?
São dois objetivos com a mudança:
Seu navegador bloqueará todas as solicitações que se enquadrarem em uma das quatro condições acima, isso pode causar um comportamento inesperado do site e frustração pois algumas funcionalidades podem deixar de funcionar.
Além disso, sempre que o navegador encontrar outro domínio ele precisará verificar com o backend e assim, uma solicitação OPTION adicional será enviada de volta ao MasterData. Sites configurados incorretamente geram uma grande quantidade dessas solicitações que além de onerar o MasterData são perfeitamente evitáveis.
O que precisa ser feito?
Para se adequar a essa definição, o desenvolvedor responsável pelo front-end precisa modificar as requisições javascript (front-end, portanto), que são feitas ao Master Data, garantindo a chamada sempre através do caminho relativo, ou seja, pelo domínio do próprio site.
Com o exemplo abaixo, ilustramos uma forma inadequada (com CORS) de realizar a requisição ao Master Data (exemplo em jQuery):
$.getJSON(“href=”https://api.vtex.com/%7Baccount%7D/dataentities/CL/search?_where=([email protected])”“);
Note que neste exemplo, a requisição está sendo realizada através de um caminho absoluto, ou seja, a URL da chamada contém o protocolo (https) e o domínio (api.vtex.com). Esse formato deixará de funcionar a partir da data mencionada neste e-mail.
Abaixo, também com um exemplo ilustrativo, demonstramos a forma correta de realizar a mesma requisição (exemplo em jQuery):
$.getJSON(“/api/dataentities/CL/search?_where=(email=[email protected])”);
Note, neste último exemplo, que o protocolo e o domínio da chamada não estão presentes. Dessa forma, o browser não fará uso do CORS e realizará a requisição através do protocolo e domínio do próprio site, seguindo o formato correto.
Quais impactos a loja poderá sofrer se não houver adequação?
A loja poderá ser impactada de diversas formas caso não ocorra a adequação, desde com mal funcionamento de recursos simples, até com interrupção nas vendas. Ou seja, o impacto estará proporcionalmente relacionado à dependência que o fluxo de compra tem dessas requisições ao Master Data.
Sou Cliente da Click Qi, devo fazer alguma ação?
Para todos os contratos de Customer Care os ajustes já estão sendo realizados.
Não sou clientes da Click Qi, mas gostaria de solucionar este problema na minha loja. Como faço?
Entre em contato conosco que nosso time comercial irá lhe auxiliar nesse processo.