Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 12455|Resposta: 1

Cabeçalho de requisição HTTP Expect é explicado em detalhes

[Copiar link]
Postado em 2021-4-22 15:32:09 | | |
Introdução ao Documento:O login do hiperlink está visível.

Ao chamar a interface da outra parte pelo curl, descobriu-se que o fenômeno do timeout era muito sério, então perguntei à pessoa da interface da outra parte, e a outra parte disse que era necessário acrescentar:


Depois de adicioná-lo, percebi que funcionava muito bem, então pesquisei como usá-lo. Ao usar curl para POST, quando "os dados POST são maiores que 1024 bytes", o curl não iniciará diretamente uma requisição POST, mas será dividido em 2 etapas:

Expect: 100-continue

1. Enviar uma solicitação contendo um Expect:100-continue, pedindo ao servidor que aceite os dados

2. Após receber a resposta de 100 continuações retornada pelo Servidor, os dados são enviados por POST ao Servidor

Mas há vários problemas com isso:

Nem todos os servidores responderão corretamente ao 100-continue, por exemplo, lighttpd, que retornará 417 Expectation Failed.

causando atraso,Quando o cliente envia o primeiro Expect:100-continue, ele precisa esperar a resposta do servidor antes de enviar o corpo da solicitação

Se você tem certeza de que o servidor da outra parte não rejeitará solicitações POST com mais de 1024 bytes, pode evitar usar esse método e evitar os dois efeitos colaterais mencionados acima, e a solução é a mencionada no início do artigo.

Cerca de 100 continuam

O objetivo disso é:

Ele permite que o cliente julgue se o servidor está disposto a receber os dados da solicitação antes de enviá-los, e se o servidor estiver disposto a recebê-los, o cliente realmente enviará os dados.

Comportamento do cliente:

Um cliente que envia 100 continue não deve esperar uma eternidade por uma resposta do servidor, e após um período de timeout, o cliente deve enviar a entidade diretamente.

Comportamento no lado do servidor:

Se o servidor receber uma solicitação de 100 continuações, ele responderá com 100 continue ou enviará um código de erro. O servidor nunca pode enviar 100 continuações para um cliente que não envie 100 continuações. Mas alguns garçons têm. IIS 5 enviando incorretamente resposta 100-continue

Se o servidor recebe o corpo do cliente antes de enviar a resposta de 100 continuações, isso significa que o cliente decidiu começar a enviar dados, então o servidor não pode mais enviar 100 continue para o cliente.
O código de configuração .NET Expect Off Expect é o seguinte:

O RestSharp está configurado da seguinte forma:







Anterior:A diferença entre utf8 e utf8mb4 no MySQL
Próximo:O SignalR adiciona suporte multidomínio para acesso remoto
 Senhorio| Postado em 2025-4-6 21:52:04 |
Método de fechamento HttpClient


ou

Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com