javascript - Angular Set-Cookie não funciona no Safari
No meu aplicativo Angular 5 usamos o cliente http para fazer requisições POST e GET. Após o login, o back-end envia um comando para definir o Cookie que pode ser usado para autenticar nas próximas requisições.
Isso parece com:
Set-Cookie: portal_ci_session=XuATFg7Y7gwG3SKff83; path=/; secure; httponly
Eu criei uma biblioteca para fazer uma requisição POST:
const myheader = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
const baseUrl = 'https://***/index.php/rest/';
@Injectable()
export class HttpprocessingService {
constructor(private http: HttpClient,private router: Router) { }
// do an post request
public doPost(url : string,postparameters : any){
var postbody = new HttpParams();
for(var key in postparameters) {
postbody = postbody.append(key,postparameters[key]);
}
return this.http.post(baseUrl+url,postbody,{headers:myheader,withCredentials:true});
Quando faço uma solicitação POST para o login no Chrome, o Cookie é recebido através do cabeçalho de resposta e automaticamente definido no cabeçalho da solicitação da próxima requisição.
Mas ao usar o Safari, esse mecanismo não funciona. O cabeçalho de resposta com o Set-Cookie é o mesmo, mas na próxima requisição o cabeçalho da requisição está vazio.
O que eu fiz de errado?
Estou executando o Angular no meu localhost:4200.