Безопасно ли передавать переменные среды клиентской стороне сапера с помощью Rollup Replace? - PullRequest
2 голосов
/ 07 марта 2020

Я использую замену в своей накопительной конфигурации для sapper и sapper-environment для передачи переменных среды на клиентскую сторону в sapper - это безопасно? Есть ли лучший / более безопасный способ приблизиться к этому?

Используя эту конфигурацию ниже:

    rollup.config.js

    const sapperEnv = require('sapper-environment');    

    export default {
        client: {
            input: config.client.input(),
            output: config.client.output(),
            plugins: [
                replace({
                    ...sapperEnv(),
                    'process.browser': true,
                    'process.env.NODE_ENV': JSON.stringify(mode)
                })
    ...

И тогда это позволяет мне использовать переменные в магазинах. js:

import { writable } from 'svelte/store';
import Client from 'shopify-buy';

const key = process.env.SAPPER_APP_SHOPIFY_KEY;
const domain = process.env.SAPPER_APP_SHOPIFY_DOMAIN;

// Initialize a client
const client = Client.buildClient({
    domain: domain,
    storefrontAccessToken: key
});

export { key, domain, client };

Я попытался запустить это на сервере js и передать переменные через данные сеанса, но на стороне клиента, независимо от того, что я делаю, они всегда возвращают 'undefined'.

1 Ответ

0 голосов
/ 07 марта 2020

Здесь есть два вопроса: а) это безопасно и б) почему значения undefined?

Ответ на первый вопрос - «нет». Каждый раз, когда вы включаете учетные данные в JavaScript, которые передаются клиенту (или в данные сеанса), вы делаете эти учетные данные доступными для всех, кто знает, как их искать. Если вам нужно этого избежать, вам понадобится ваш сервер (или другой сервер) для отправки запросов от имени аутентифицированных клиентов.

Что касается второй части, то, к сожалению, очень трудно сказать без воспроизведения!

...