【问题标题】:Implementing ld+json using Nuxt and __dangerouslyDedableSanitizers使用 Nuxt 和 __dangerouslyDedableSanitizers 实现 ld+json
【发布时间】:2020-04-30 05:03:38
【问题描述】:

我正在使用 nuxt.js,需要使用 ld+json 为 google 使用结构化数据

我将使用已填充并通过 JSON.stringify 方法运行的动态数据。

我是否正确地将其用于 XXS 脚本?我是否还需要传递 __dangerouslyDisableSanitizers,因为我不确定已提供的文档?

head(){
    let user = this.user;
    return {
        title: 'This is my page title',
        meta: [
            { hid: 'description', name: 'description', content: 'This is my description' }
        ],
        script: [
            {
                innerHTML: JSON.stringify({
                    '@context': 'http://schema.org',
                    '@type': 'Website',
                    'url': `${user}`
                }), 
                type: 'application/ld+json'
            }
        ],
        __dangerouslyDisableSanitizers: ['script']
    }
},

【问题讨论】:

    标签: vue.js nuxt.js


    【解决方案1】:

    是的,没错。

    但是由于 Nuxt.js 使用 vue-meta v2.1,如果你使用 json 属性,JSON.stringify__dangerouslyDisableSanitizers 是没用的:

    head(){
        let user = this.user;
        return {
            title: 'This is my page title',
            meta: [
                { hid: 'description', name: 'description', content: 'This is my description' }
            ],
            script: [
                {
                    json: {
                        '@context': 'http://schema.org',
                        '@type': 'Website',
                        'url': `${user}`
                    }, 
                    type: 'application/ld+json'
                }
            ]
        }
    },
    

    查看 vue-meta 文档:https://vue-meta.nuxtjs.org/api/#add-json-data

    【讨论】:

    • 好的,谢谢.....当我在源代码中查看它时,我的 json 对象中出现了文本.....这是正确的吗?我们是澳大利亚的......或者它应该是澳大利亚的源代码?
    • 是的,这是一个正确的值。正如文档 (vue-meta.nuxtjs.org/api/#add-json-data) 中所解释的,您的文本刚刚被清理:“将数组或对象传递给 json 属性时,变量的键和值仍将被清理以防止 XSS”
    • @NicolasPennec 我复制粘贴的 json-ld 净化文本..in search.google.com/structured-data/testing-tool 看起来 google 没有识别它。
    • @GeorgeAlvis 您使用了哪个版本的 nuxt 和 vute-meta? (请运行“npm list nuxt vue-meta”)。 nuxt 2.12.2(+ vue-meta 2.3.3 as children dep)对我来说很好用
    • @NicolasPennec 我从来没有说过它不起作用....我的意思是当我在测试工具中测试时谷歌没有验证经过清理的 json
    猜你喜欢
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2018-12-02
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多