Esta página descreve como as aplicações do App Engine usam o serviço URL Fetch para emitir pedidos HTTP e HTTPS e receber respostas. Para ver exemplos de código que demonstram como emitir pedidos HTTP e HTTPS a partir da sua aplicação do App Engine, consulte o artigo Emitir pedidos HTTP(S).
Se tiver
configurado o acesso VPC sem servidor
ou se usar a API Sockets, tem
de impedir que a obtenção de URLs processe pedidos.
A obtenção de URLs faz com que os pedidos à sua rede VPC ou à API Sockets falhem. Depois de desativar a obtenção de URLs, a biblioteca Python padrão processa os pedidos HTTP. Se precisar das funcionalidades fornecidas pela obtenção de URLs para pedidos específicos, pode usar a biblioteca urlfetch
diretamente para esses pedidos específicos.
Pedidos
O App Engine usa o serviço URL Fetch para emitir pedidos de saída. Em Python, pode usar as bibliotecashttplib
, urllib
e urllib2
para fazer pedidos HTTP. Numa aplicação do App Engine, cada biblioteca executa estes pedidos através do serviço de obtenção de URL. Também pode usar a biblioteca
urlfetch
diretamente.
Protocolos de pedidos
Uma aplicação pode obter um URL através de HTTP ou HTTPS. O protocolo que deve ser usado é inferido através da análise do protocolo no URL de destino.
O URL a obter pode usar qualquer número de porta nos seguintes intervalos:
80
-90
440
-450
1024
-65535
.
Se a porta não for mencionada no URL, a porta é implícita no protocolo. Os pedidos HTTP ocorrem na porta 80
e os pedidos HTTPS ocorrem na porta 443
.
Métodos de pedido
Se emitir pedidos através do serviço URL Fetch, pode usar qualquer um dos seguintes métodos HTTP:
GET
POST
PUT
HEAD
DELETE
PATCH
Um pedido pode incluir cabeçalhos HTTP e, para pedidos POST
, PUT
e PATCH
, um payload.
Encaminhamento por proxy de pedidos
Tenha em atenção que o serviço URL Fetch usa um proxy compatível com HTTP/1.1 para obter o resultado.
Para impedir que uma aplicação cause uma recursão infinita de pedidos, um controlador de pedidos não pode obter o seu próprio URL. Ainda é possível causar uma recursão infinita por outros meios. Por isso, tenha cuidado se a sua aplicação puder ser feita para obter pedidos de URLs fornecidos pelo utilizador.
Cabeçalhos do pedido
A sua aplicação pode definir cabeçalhos HTTP para o pedido de saída.
Quando envia um pedido HTTP POST
, se um cabeçalho Content-Type
não for definido explicitamente, o cabeçalho é definido como x-www-form-urlencoded
.
Este é o tipo de conteúdo usado pelos formulários Web.
Por motivos de segurança, não é possível modificar os seguintes cabeçalhos pela aplicação:
Content-Length
Host
Vary
Via
X-Appengine-Inbound-Appid
X-Forwarded-For
X-ProxyUser-IP
Estes cabeçalhos são definidos com valores precisos pelo App Engine, conforme
adequado. Por exemplo, o App Engine calcula o cabeçalho Content-Length
a partir dos dados do pedido e adiciona-o ao pedido antes de o enviar.
Os seguintes cabeçalhos indicam o ID da aplicação da app requerente:
User-Agent
. Este cabeçalho pode ser modificado, mas o App Engine anexa uma string de identificador para permitir que os servidores identifiquem os pedidos do App Engine. A string anexada tem o formato"AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)"
, em queAPPID
é o identificador da sua app.X-Appengine-Inbound-Appid
. Este cabeçalho não pode ser modificado e é adicionado automaticamente se o pedido for enviado através do serviço URL Fetch quando o parâmetro follow redirects estiver definido comoFalse
.
Limites de tempo dos pedidos
Pode definir um prazo ou um tempo limite para um pedido. Por predefinição, o tempo limite de um pedido é de 10 segundos.
Pode enviar pedidos síncronos e pedidos assíncronos. O seguinte comportamento aplica-se à API URL Fetch:
- Pedidos síncronos: a chamada de obtenção aguarda até que o anfitrião remoto devolva um resultado e, em seguida, devolve o controlo à aplicação. Se o tempo de espera máximo para a chamada de obtenção for excedido, a chamada gera uma exceção.
- Pedidos assíncronos: o serviço de obtenção de URL inicia o pedido e, em seguida, devolve imediatamente um objeto. A aplicação pode realizar outras tarefas enquanto o URL está a ser obtido. Quando a aplicação precisa dos resultados, chama um método no objeto, que aguarda a conclusão do pedido, se necessário, e, em seguida, devolve o resultado. Se existirem pedidos de obtenção de URLs pendentes quando o controlador de pedidos sair, o servidor de aplicações aguarda que todos os pedidos restantes sejam devolvidos ou atinjam o respetivo prazo antes de devolver uma resposta ao utilizador.
Ligações seguras e HTTPS
A sua aplicação pode obter um URL de forma segura através do HTTPS para estabelecer ligação a servidores seguros. Os dados de pedido e resposta são transmitidos através da rede de forma encriptada.
Por predefinição, o proxy URL Fetch valida o anfitrião com o qual contacta. Este comportamento permite à API detetar ataques man-in-the-middle entre o App Engine e o anfitrião remoto quando usa HTTPS.
Responses
Se usar a API URL Fetch, tenha em atenção que o serviço URL Fetch devolve todos os dados de resposta, incluindo a resposta, o código, os cabeçalhos e o corpo.
Por predefinição, se o serviço URL Fetch receber uma resposta com um código de redirecionamento, o serviço segue o redirecionamento. O serviço segue até cinco respostas de redirecionamento e, em seguida, devolve o recurso final. Pode dar instruções ao serviço URL Fetch para não seguir redirecionamentos e, em alternativa, devolver uma resposta de redirecionamento à aplicação.
Usar a obtenção de URLs no servidor de desenvolvimento
Quando a sua aplicação está em execução no servidor de desenvolvimento do App Engine no seu computador, as chamadas ao serviço URL Fetch são processadas localmente. O servidor de desenvolvimento obtém URLs contactando diretamente anfitriões remotos a partir do seu computador, usando qualquer configuração de rede que o computador esteja a usar para aceder à Internet.
Quando testar as funcionalidades da sua aplicação que obtêm URLs, certifique-se de que o seu computador consegue aceder aos anfitriões remotos.
Quotas e limites para a obtenção de URLs
Para ver informações sobre as quotas do serviço de obtenção de URL, consulte o artigo Quotas. Para ver a utilização atual da quota da sua aplicação, aceda à página Detalhes da quota naGoogle Cloud consola.
Aceda à página Detalhes da quota
Além disso, aplicam-se os seguintes limites à utilização do serviço URL Fetch:
Limite | Montante |
---|---|
Tamanho do pedido | 10 megabytes |
Tamanho do cabeçalho do pedido | 16 KB (tenha em atenção que isto limita o comprimento máximo do URL que pode ser especificado no cabeçalho) |
Tamanho da resposta | 32 megabytes |
O que se segue?
Execute exemplos de código e receba orientações sobre como emitir pedidos a partir da sua aplicação em Emitir pedidos HTTP(S).