Определить «значение» по импортированному JS - PullRequest
0 голосов
/ 05 мая 2019

Я работаю над сайтом, где пользователи могут добавлять проекты. Они могут добавить ссылку своего сайта на проект. Но чтобы убедиться, что сайт принадлежит им, они должны добавить скрипт и сгенерированный токен в заголовок индекса своего сайта.

Я хочу сделать что-то вроде этого:

<script src="linktoscript" data-sitekey="token"></script>

Но я не знаю, как загрузить этот «токен» в сценарий.

Я пытался:

var token = response('data-sitekey');

Не работает.

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Вероятно document.currentScript - это то, что вы ищете.document.currentScript возвращает DOM <script>.

Попробуйте что-то вроде этого:

console.log(document.currentScript.dataset.sitekey)

Я принимал демо .Используйте «View Source» для просмотра кода.

0 голосов
/ 05 мая 2019

Вот одно решение, но есть еще много.Я не советую им добавлять скрипт на их сайт.Они, вероятно, не будут продвигать ваш скрипт и откажутся запускать его на своем сайте.

Кроме того, если ваш скрипт на их сайте отправляет токен на ваш сервер, вы не можете проверить, действительно ли запрос поступил с их сайта.С таким же успехом они могли бы запустить ваш скрипт на своей локальной машине.

Шаг 1

Сгенерировать токен и сохранить его в своей БД вместе с URL своего сайта

Пример токена tJ0qEKJQlp2ZXb19

Шаг 2

Попросите пользователя добавить этот метатег на свой сайт.

Предполагается, что ваш сайт называется example.com

<meta name="example.com-token" content="tJ0qEKJQlp2ZXb19">

Шаг 3

Убедитесь, что на их сайте существует метатег.

В JS:

fetch(urlOfTheirSite, {
  headers: {
    "Content-Type": "text/html",
  },
}).then((resp) => {
  if(!resp.ok) {
    //Cannot fetch thier website
  }
  resp.text()
}).then((html) => {
  var doc = new DOMParser().parseFromString(stringContainingHTMLSource, "text/html");
  var token = doc.querySelector("meta[name=example.com-token]");
  /*
   * Send token and url of the website to your server for verification.
   * On your server check if the url and the token match the entry in your DB
   */
})

В PHP:

Использование cURL и этот RegEx

meta\s+name="?example\.com-token"?\s*content="?(\w+)"?\s*

Первая группа захвата будет содержать токен

Шаг 4

Сообщите вашему пользователючто их сайт был проверен и теперь они могут удалить метатег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...