O que é domínio cruzado e como resolver problemas de domínio cruzado

o que é domínio cruzado

No desenvolvimento do campo da web, os modos de separação front-end e back-end são frequentemente usados. Neste modo, o front-end e o back-end são aplicações web independentes, por exemplo: o back-end é um programa Java e o front-end é uma aplicação React ou Vue.

Quando aplicativos da web independentes acessam uns aos outros, é provável que existam problemas entre domínios.

Geralmente, existem duas maneiras de resolver problemas entre domínios e como resolvê-los com nginx

1. O CORS
define o cabeçalho de resposta HTTP no servidor back-end e adiciona o nome de domínio necessário para permitir o acesso ao Access-Control-Allow-Origin.

2. jsonp
usa o backend para construir dados json de acordo com a solicitação e os retorna, e o frontend usa jsonp para domínio cruzado.

Essas duas abordagens não são discutidas neste artigo.

Deve-se notar que o nginx também fornece uma solução entre domínios baseada na primeira ideia.

Exemplo: o site www.helloworld.com é composto por um aplicativo front-end e um aplicativo back-end. O número da porta front-end é 9000 e o número da porta back-end é 8080.

Se o front-end e o back-end interagirem usando http, a solicitação será rejeitada devido a problemas entre domínios. Vamos ver como o nginx resolve isso:

Primeiro, defina cors no arquivo enable-cors.conf:

permitir lista de origem

set $ACAO ‘*’;

definir origem única

if ( httporigin ∗ (www.helloworld.com) http_origin ~* (www.helloworld.com)ht p _óentrar _ _ _ ( www.h el ow ou ld.com ) ) { set $ ACAO $ http_origin ; _ _ }

if ( erro de análise KaTeX: esperado '}', obteve 'EOF' no final da entrada:…Allow-Origin' " http_origin";
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow -Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since, Cache-Control,Content-Type';
}

if ($request_method = 'OPÇÕES') { set cors " cors "
cors " {cors}opções";
}

if ($request_method = 'GET') { set cors " cors "
cors " {cors}obter";
}

if ($request_method = 'POST') { set cors " cors "
cors " {cors}post";
}
Em seguida, inclua enable-cors.conf em seu servidor para introduzir a configuração entre domínios:

-------------------------------------------------- --

Este arquivo é um fragmento de configuração do projeto nginx

Você pode incluir diretamente na configuração do nginx (recomendado)

Ou copie para o nginx existente e configure você mesmo

O nome de domínio www.helloworld.com precisa ser configurado com hosts DNS

Entre eles, a API habilitou o cors, que precisa cooperar com outro arquivo de configuração neste diretório

-------------------------------------------------- --

front_server upstream{ servidor www.helloworld.com:9000; } upstream api_server{ servidor www.helloworld.com:8080; }




servidor { ouvir 80; nome_do_servidor www.helloworld.com;

localização ~ ^/api/ { include enable-cors.conf; proxy_pass http://api_server; reescrever “^/api/(.*)$” /$1 break; }



location ~ ^/ { proxy_pass http://front_server; } } Aqui está feito.



Acho que você gosta

Origin blog.csdn.net/weixin_45549370/article/details/131498501
Recomendado
Clasificación