У меня возникла странная ошибка при выполнении запросов CORS с моего сайта (приложение React работает с API по https). Ошибки появляются только на IOS 10.3.1 и в браузере Chrome (57) (Safari и webViews в порядке). Из-за отсутствия инструментов для отладки IOS Chrome единственной записью, которую я имею, является то, что журнал Sentry (сторонняя услуга). Ошибки являются вариациями:
SecurityError Заблокирован кадр с источником " https://xxxxxreactapp.com" от доступа к кадру с источником " https://xxxxx.fls.doubleclick.net". Протоколы, домены и порты должен соответствовать.
Конкретный запрос запускается из Диспетчера тегов Google, но запросы к моему собственному API не срабатывают аналогичным образом (хотя, очевидно, без упоминания фреймов, но все же связанных с перекрестными ссылками).
Типичное обращение к моему API выглядит так:
OPTIONS /jp/plusbus HTTP/1.1
Host: api-xxxxxx.xxx.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: https://xxxxxreactapp.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Access-Control-Request-Headers: content-type,x-access-token,x-trace-token
Accept: */*
Referer: https://xxxxxreactapp.com/xxxx/xxx
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8,el;q=0.6
и ответ сервера на это:
HTTP/1.0 204 No Content
Connection: close
Content-Type: text/html
Access-Control-Max-Age: 1728000
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET,POST,PUT,DELETE,PATCH
Access-Control-Allow-Headers: DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Access-Token,X-Customer-Token,X-Customer-Device,X-Brand-Id,X-User-Token,X-User-Grant-Token,X-Trace-Token,X-Smartcard-Version,Authorization
Content-Length: 0
Это описывает взаимодействие между App и API, которые я контролирую, я соблазн думать, что что-то не так с моей настройкой, но 2 вещи приводят к другому выводу:
- Я также использую диспетчер тегов Google на том же сайте, его запросы также терпят неудачу одинаково (GTM использует стандартную установку iframe, которая также пытается связывать CROSS-ORIGIN).
- Эта настройка была стабильной до последнего обновления IOS, все работает правильно в IOS 10.2
UPDATE
Чтобы отсортировать вызовы api, это было связано с моим стеком промежуточного программного обеспечения. НО проблема сторонних разработчиков по-прежнему не решена.
Все инструменты, которые полагаются на iframes для передачи данных по внешним источникам, терпят неудачу с вышеупомянутым SecurityError Blocked a frame ....
, который включает платежи GoogleTagManager и Paypal