wszystko wygląda jak poprzednio ale request jest bardziej złożony (ogółem nie jest simple-requestem) i ma np. dodatkowy nagłówek X-Custom. Przeglądarka wysyła teraz preflight request, który jest pytaniem o akceptację pierwotnego requesta przez serwer2. Preflight request używa metody OPTIONS, posiada nagłówki : Origin, Access-Control-Request-Method (metoda pierw. req.) oraz Access-Control-Request-Headers (ten już nieobowiązkowy i występuje tylko gdy mamy dodatkowe nagłówki w pierwotnym requeście). Sewer2 decyduje na podstawie logiki aplikacji i odsyła odpowiedź z nagłówkami: Access-Control-Allow-Origin, Access-Control-Allow-Methods oraz Access-Control-Allow-Headers (ostatni ponownie nie zawsze obowiązkowy), dalej komunikacja przebiega identycznie. Jeśli nie obsluguje cross-origin, pierwotny request nie wykona się na serwerze.