Tempo aproximado para leitura: 00:03:00 min
Dúvida
E possível identificar um acesso proveniente de um "IP Externo" à rede Local / Sistema Protheus12.1.17, quando utilizado os Métodos: "GET" e/ou "POST" por terceiros?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Até o release 12.1.27
Solução
A função HTTPHEADER() retorna um array com as informações, enviadas no cabeçalho da requisição, as quais o servidor REST Protheus utiliza. Dentre estas informações, está o endereço IP da requisição, acessível diretamente por HTTPHEADER('__IPCONN__').
Esta somente funciona até 12.1.27 utilizando Rest AdvPL.
A seguir, o exemplo de uma API simples:
#INCLUDE "TOTVS.CH"
#INCLUDE "RESTFUL.CH"
WSRESTFUL TGETSEC DESCRIPTION "Exemplo de serviço REST"
WSMETHOD GET DESCRIPTION "Teste GET" WSSYNTAX "/_TGETSEC || /_TGETSEC/{id}"
END WSRESTFUL
WSMETHOD GET WSSERVICE TGETSEC
Local cIpConn
cIpConn := HTTPHEADER('__IPCONN__')
::SetResponse(EncodeUtf8('Requisição recebida do endereço: ' + cIpConn))
Return .T.
Observação:
No Rest2.0 até o momento não há possibilidade de retorno.
Entendendo as novidades do REST 2.0
1 Comentários