通过导入的JS检测“值”

时间:2019-05-05 15:09:22

标签: javascript html token

我正在网站上,用户可以在其中添加项目。他们可以将其网站的链接添加到项目。但是要验证网站是他们的网站,他们必须在网站索引的开头添加一些脚本和生成的令牌。

我想做这样的事情:

package org.vishal.hibernate;
import org.SecondHibernateProject.dto.UserDetails;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;;
public class HibernateTest2 {

    public static void main(String[] args) {
        UserDetails user = new UserDetails();
        user.setUserId(1);
        user.setUserName("First User");
        SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
        Session session= sessionFactory.openSession();
        session.beginTransaction();
        session.save(user);
        session.getTransaction().commit();

    }

}

但是我不知道如何在脚本中加载该“令牌”。

我尝试过:

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

没有用。

2 个答案:

答案 0 :(得分:0)

这是一种解决方案,但还有更多解决方案。 我建议您不要让他们向自己的网站添加脚本。他们可能不会使用您的脚本,并拒绝让其在自己的网站上运行。

此外,如果您网站上的脚本将令牌发送到您的服务器,则您无法验证请求是否确实来自其网站。他们也可以在本地机器上运行您的脚本。

步骤1

生成令牌并将其与网站网址一起存储在数据库中

示例令牌tJ0qEKJQlp2ZXb19

步骤2

要求用户将此meta标签添加到他们的网站。

假设您的网站名为example.com

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

步骤3

验证meta标签在其网站上存在。

在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

告诉您的用户他们的网站已经过验证,并且可以立即删除元标记。

答案 1 :(得分:-1)

您可能正在寻找document.currentScript Promise.prototype.bind = function(func) { var initialPromise = this; return new Promise(function(resolve) { initialPromise.then(result => func(result).then(x => resolve(x))) }); } 返回 var id = x => new Promise((resolve) => resolve(x)); // Law 1 -Left identity: return a >>= f ≡ f a var value = 1 var f = x => id(x * 2); //id(value).bind(f) ==f(value) id(value).bind(f).then(console.log) f(value) .then(console.log) // Law 2 -Right Identity : m >>= return ≡ m var m = id(1) //m.bind(id) == m m.bind(id).then(console.log) m .then(console.log) //Law 3 -Associativity: (m flatMap f) flatMap g assert_=== m flatMap { x => f(x) flatMap {g} } var m = id(1); var f = x => id(x * 2); var g = x => id(x * 5); m.bind(f).bind(g) .then(console.log); m.bind(x=>f(x).bind(g)) .then(console.log); 的DOM。

尝试这样的事情:

document.currentScript

我托管了demo。使用“查看源代码”查看代码。