nportugal Posted September 29, 2016 at 07:12 AM Report #599222 Posted September 29, 2016 at 07:12 AM Boas, O portal das finanças alterou a forma de emitir os recibos verdes e agora é através de um formulário em angular. No formato anterior, formulário HTML, utilizava uma base de dados em mysql para os clientes e serviços e "postava" via PHP directamente para a página da A.T e o recibo "autopreenchia-se" mas agora com o Angular já não funciona. Já tentei enviar os valores via JSON mas também não aceita. Alguém sabe uma técnica para enviar dados externos para angular ?
Knitter Posted September 29, 2016 at 08:54 AM Report #599223 Posted September 29, 2016 at 08:54 AM O pedido é feito na mesma em POST, tens é de encontrar o URL que está a ser usado e garantir que estás a usar os mesmos cabeçalhos no pedido, mas não muda nada em relação a um form "normal". Tens é de encontrar o URL no código JS ou analisar um pedido na página da portal para veres onde está a ser feito o acesso ao servidor, pode ser em mais que um pedido. 1 Report
nportugal Posted September 30, 2016 at 05:21 AM Author Report #599242 Posted September 30, 2016 at 05:21 AM (edited) 20 horas atrás, Knitter disse: O pedido é feito na mesma em POST, tens é de encontrar o URL que está a ser usado e garantir que estás a usar os mesmos cabeçalhos no pedido, mas não muda nada em relação a um form "normal". Tens é de encontrar o URL no código JS ou analisar um pedido na página da portal para veres onde está a ser feito o acesso ao servidor, pode ser em mais que um pedido. Olá Knitter, Obrigado pela resposta. Estou há 3 dias a ler a doc. do Angular mas sem que me ajude em nada. O Angular é fechado e processa-se no cliente pelo que não vejo maneira de lá chegar. Já tentei fazer o POST para a página com os nomes dos campos correctos mas realmente descurei os cabeçalhos. Dá erro http 405 Método Não Permitido... Acho que ainda terei de contornar a validação e essa parte é que é toda feita no Angular. Pelo que vejo estou condenado a preencher TODOS os campos do recibos que emito "á unha"... e chamam isto de evolução.... provavelmente... Edited September 30, 2016 at 05:32 AM by nportugal Erro ortográfico
Knitter Posted September 30, 2016 at 07:32 AM Report #599243 Posted September 30, 2016 at 07:32 AM 2 horas atrás, nportugal disse: O Angular é fechado e processa-se no cliente pelo que não vejo maneira de lá chegar. Isso é um pouco contrassenso. Além de estarmos a falar de um projeto de software livre, por definição aberto, como dizes processa-se no cliente que és tu, logo tens acesso a toda a lógica, validações e procedimentos que o cliente executa para poderes estudar e encontrar uma solução que se adapte ao que precisas. Fui ao portal das finanças e encontrei a aplicação completa (AngularJS) para a área de emissão de recibos, só tive de abrir as ferramentas de developer do Firefox 🙂 405 é o resultado de executares um POST num recurso que pede GET, ou vice-versa. Estás a tentar executar um POST num URL que não responde ao POST; estás a usar o URL errado. Os URL para a área de recibos têm o formato /recibo/portal/<ação>, sendo que a ação varia conforme o que estás a fazer. Já criaste um recibo enquanto inspecionavas o pedido? É a forma mais simples de veres quais os recursos que são usados e quais os URL que estão a ser pedidos.
nportugal Posted September 30, 2016 at 08:54 AM Author Report #599246 Posted September 30, 2016 at 08:54 AM (edited) 1 hora atrás, Knitter disse: Isso é um pouco contrassenso. Além de estarmos a falar de um projeto de software livre, por definição aberto, como dizes processa-se no cliente que és tu, logo tens acesso a toda a lógica, validações e procedimentos que o cliente executa para poderes estudar e encontrar uma solução que se adapte ao que precisas. Fui ao portal das finanças e encontrei a aplicação completa (AngularJS) para a área de emissão de recibos, só tive de abrir as ferramentas de developer do Firefox 🙂 405 é o resultado de executares um POST num recurso que pede GET, ou vice-versa. Estás a tentar executar um POST num URL que não responde ao POST; estás a usar o URL errado. Os URL para a área de recibos têm o formato /recibo/portal/<ação>, sendo que a ação varia conforme o que estás a fazer. Já criaste um recibo enquanto inspecionavas o pedido? É a forma mais simples de veres quais os recursos que são usados e quais os URL que estão a ser pedidos. Sim, tens razão, esqueci-me de informar que o post, de onde envio os dados é efectuado a partir de um outro servidor e executado noutro separador. Estou a fazer passo a passo o preenchimento de um recibo, com o firebug ligado a ver se apanho os url do javascript e fazer o envio por GET, e talvez em JSON que pelo que percebo o Angular até processa nativamente ou para o contornar e enviar os dados para a páginal final (ainda terei de efectuar todo o processo de emitir um recibo...). Obrigado pelas dicas. Estou a ver muito trabalho de "sapa" mas vou continuar a vasculhar no portal da A.T Edited September 30, 2016 at 09:00 AM by nportugal
nportugal Posted October 7, 2016 at 07:54 AM Author Report #599447 Posted October 7, 2016 at 07:54 AM Boas, O problema persiste. Afinal não é só postar os dados para a página (endereço) correcto. Como o formulário se processa no cliente o envio dos dados tem de ser efectuado pela página do portal. Depois de descobrir para onde postar os dados (para o processo de validação, em javascript que deveria funcionar como api [https://irs.portaldasfinancas.gov.pt/recibos/api/emitirValidation]) ao fazer o envio dos dados a partir de outro sítio (onde tenho a base de dados de clientes e serviços) ocorre um erro de CORS. Já tentei usar o cabeçalho A-C-A-O mas no firefox não tenho tido sucesso. E preciso de uma solução cross-browser. Compreendo que a AT pretenda assegurar o bom funcionamento do seu servidor mas os ciclos que poupa ao fazer a validação dos formulários em angular e no cliente não deverão ser assim tão preciosos... Isto vindo de uma entidade que obriga a usar Java para aceder ao seu portal... portanto não é decerto uma questão de segurança...
Knitter Posted October 7, 2016 at 08:48 AM Report #599448 Posted October 7, 2016 at 08:48 AM O que é que o preflight de diz sobre autorização? Se estiver limitado ao URL do portal das finanças então não há nada a fazer, só esse servidor é que poderá efetuar pedidos para esse endereço (assumindo que é validado no servidor destino), o que faz sentido, e não vais conseguir fazer os pedidos como estás a tentar. Neste caso aquilo que poderá funcionar é usares um browser headless que possas automatizar, vai comportar-se como um browser normal e respeitar o sistema CORS.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now