无论如何使用JSON-LD Schema没有内联

Cyn*_*nic 8 seo schema.org content-security-policy json-ld

无论如何使用JSON-LD而不script在HTML中包含内联,但仍然可以让Google(和其他)蜘蛛找到它吗?环顾四周,我看到了一些相互矛盾的信息.

如果这是JSON-LD文件:

    <script type="application/ld+json">
    {
      "@context" : "http://schema.org",
      "@type" : "WebSite",
      "name" : "Example Site",
      "alternateName" : "example",
      "description" : "Welcome to this WebSite",
      "headline" : "Welcome to Website",
      "logo" : "https://example.com/public/images/logo.png",
      "url" : "https://example.com/"
    }
    </script>
Run Code Online (Sandbox Code Playgroud)

head在HTML中有这个:

<script src="/public/json-ld.json" type="application/ld+json"></script>
Run Code Online (Sandbox Code Playgroud)

编辑:我也尝试过:

<link href="/public/json-ld.json" rel="alternate" type="application/ld+" />
Run Code Online (Sandbox Code Playgroud)

谷歌蜘蛛似乎很想念它,测试工具也是如此,除非我直接指向该文件.我正在努力解决CSP中的不安全内联问题.我唯一能找到的就是这个,它可以在Chrome中运行,但不希望在每个其他浏览器上触发控制台错误.另外,我只是喜欢从页面结构中抽象出Schema.org数据的想法.将JSON-LD添加到Google网站站长工具的站点地图会有帮助吗?

道歉,JSON-lD的总菜单,并最终保留在电子邮件文档(这将是一个站点)或旧文档.

小智 4

确实,它不能成为外部的,也不支持内联,但您仍然可以通过 JavaScript 文件将其注入到 DOM 中来实现您想要的目的。

注意:为了整洁起见,我使用数组,这样我就可以对所有结构化数据元素进行分段并添加无限数量的数据元素。我的网站上有此代码的更复杂版本,并且实际上有一个伪装成 JavaScript 文件的外部服务器端渲染文件。

是的,谷歌搜索机器人确实理解它。可能需要几天时间才能注册,并且使用网站管理员工具强制重新抓取似乎不会强制刷新 JSON-LD 数据 - 似乎您只需要等待。

var structuredData = {
    schema: {
        corporation: {
            '@context':         'http://schema.org',
            '@type':            'Corporation',
            'name':             'Acme',
            'url':              'https://acme.com',
            'contactPoint':
            {
                '@type':        'ContactPoint',
                'telephone':    '+1-1234-567-890',
                'contactType':  'customer service',
                'areaServed':   'US'
            }
        },
        service: {
            '@context':         'http://schema.org/',
            '@type':            'Service',
            'name':             'Code optimization',
            'serviceOutput' :   'Externalized json',
            'description':      'Inline json to externalized json'
        },
    },
    init: function () {
        var g = [];
        var sd = structuredData;
        g.push(sd.schema.corporation);
        g.push(sd.schema.service);
        //etc.

        var o = document.createElement('script');
        o.type = 'application/ld+json';
        o.innerHTML = JSON.stringify(g);
        var d = document; (d.head || d.body).appendChild(o);
    }
}
structuredData.init();
Run Code Online (Sandbox Code Playgroud)