0
votes

I am currently working on a shopify embedded app that uses python flask and the shopifyapi library in the backend. The app is working fine and is visible in any browser except (macos and ios) safari.

The error I recieve when using safari is the following:

Blocked mixed content http://app-domain.com/shopify?hmac=xxx..&protocol=https://&shop=shopify-store-name because 'block-all-mixed-content' appears in the Content Security Policy

Somehow safari tries to load something via http when visiting the app in shopify admin, however when using google chrome, firefox etc. this is not the case and everything works fine. Shopify embedded apps load the app content in an iframe, where it is displayed embedded in the shopify admin page.

When I look at the iframe src value within the chrome/firefox debugger I can see that it is correctly pointing to:

https://app-domain.com/shopify?hmac=xxx..&protocol=https://&shop=hopify-store-name

The app redirects and adresses set in the shopify partner settings are also all using https.

What I already tried without success is:

  • Using SSLify in the backend to redirect any requests to https
  • Enabling CORS

I am using:

  • Python 3.6.6
  • Flask 1.0.2
  • ShopifyAPI 3.1.0
  • Werkzeug 0.14.1

As I only recieve the error when using safari I have no clue what might be the problem and hope that somebody can help me with this.

Best regards Dominik

1

1 Answers

1
votes

Seems pretty simple... check out this...

https://ecommerce.shopify.com/c/api-announcements/t/breaking-change-to-safari-itp-2-0-540147

Safari, and soon FF, put the hate on a notorious privacy hole... so you're seeing how that affects the Shopify pattern for embedded Apps.

It is a real hack to sort of fix, and you know, it is only going to get worse :)