|
Descrição do problema Quando uma chamada multidomínio ASP.NET MVC ou um serviço escrito ASP.NET Web API, ela se torna inacessível. Método de reprodução - Use um modelo para criar um projeto simples ASP.NET API Web, depure para garantir que funcione
- Crie outro projeto com apenas uma página HTML e faça uma chamada AJAX
- Abra esta página no seu navegador e você encontrará o seguinte erro (405: Método Não Permitido)
Nota: A mesma situação ocorre em ASP.NET MVC. Em alguns casos, o MVC também pode ser usado diretamente para desenvolver serviços, o que tem suas próprias vantagens e desvantagens em comparação com a WebAPI. Abaixo está um exemplo de um serviço desenvolvido usando MVC
Análise da causa A razão fundamental para o problema multidomínio é que o navegador tem baixos privilégios em ambas as solicitações e geralmente só permite chamadas para recursos no domínio local, a menos que o servidor alvo informe explicitamente que chamadas cruzadas são permitidas. Portanto, embora o problema entre domínios seja causado pelo comportamento do navegador, a solução está no lado do servidor. Porque não é possível exigir que todos os clientes reduzam a segurança.
solução Para ASP.NET projetos MVC e ASP.NET Web API, fiz algumas pesquisas e determinei que o seguinte cenário é viável. Para ASP.NET MVC, você só precisa adicionar o seguinte conteúdo ao web.config
Para ASP.NET APIs Web, além das configurações acima, um design especial precisa ser adicionado, que consiste em adicionar um método OPTIONS para cada Controlador de API, mas sem retornar nada. Opções de cadeias públicas() { return null; Resposta HTTP 200 com corpo vazio }
Nota: Essa função também pode ser feita com alguma pesquisa, e pode ser melhor projetá-la como um filtro.
|