Я создал настраиваемую страницу входа, которая полностью работает в Firefox и Chrome. Эта страница полностью настроена и требует авторизации клиента, подтверждения адреса электронной почты и пароля и перенаправления на другую страницу.
С помощью enpoint /remote.php?w=expressCheckoutLogin я могу отправить электронное письмо и пароль в BC, получить подтверждение, а затем перенаправить запрос на другую страницу. На этой странице должен отображаться идентификатор клиента, подтверждающий, что клиент вошел в систему и продолжает работу со страницей.
Это полностью работает в Firefox и Chrome (IE не тестировался), но в SAFARI он не завершает вход в систему. В Safari запрос на выборку дает статус == 1, и вход в систему выполнен, но когда я перехожу на новую страницу, идентификатор клиента недоступен. Кажется, что клиент не авторизован (даже если статус хороший). Повторяю, такое бывает только в SAFARI и OPERA (а не в firefox и chrome). Есть некоторые несовместимости Javascript с двумя браузерами?
Я использую MAC и последнюю версию краеугольного камня 2.2.1
Кто-нибудь знает, что вызывает такое загадочное поведение? Это мой код для звонка:
fetch('/remote.php?w=expressCheckoutLogin',{
headers: {
'Accept': '*/*',
'Content-Type': 'application/x-www-form-urlencoded'
},
method: 'POST',
body: 'login_email='+login_email+'&login_pass='+login_password
})
.then(response => response.json().then(json => {
if (json.status == 1) {
window.location = '/sell-checkout-1/'
} else {
// manage error
// .... //
}
}))
.catch((error) => {console.error(error)});





Fetch не поддерживается в Opera и более ранних версиях Safari. Я бы рекомендовал проверить версию Safari, с которой вы тестируете:
https://caniuse.com/#feat=fetch
Вы можете использовать polyfill, но лучшим вариантом может быть использование API входа в систему клиента вместо отправки электронной почты и пароля в запросе:
https://developer.bigcommerce.com/api/v3/storefront.html#/introduction/customer-login-api