Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 谷歌标签管理器403';s每个请求,即使定义了CORS映射_Spring Mvc_Spring Security_Cors_Google Tag Manager_Amp Html - Fatal编程技术网

Spring mvc 谷歌标签管理器403';s每个请求,即使定义了CORS映射

Spring mvc 谷歌标签管理器403';s每个请求,即使定义了CORS映射,spring-mvc,spring-security,cors,google-tag-manager,amp-html,Spring Mvc,Spring Security,Cors,Google Tag Manager,Amp Html,当我转到AMP时,Google标签管理器停止工作。 每次打开AMPed页面时,我都会在浏览器控制台中看到一些错误,例如 第一个错误: https://www.googletagmanager.com/amp.json?id=MY_GTM_TAG&gtm.url=MY_HTTP_URL (403) 第二个错误: https://www.googletagmanager.com/amp.json?id=MY_GTM_TAG&gtm.url=MY_HTTP_URL 请求的资源上不存

当我转到AMP时,Google标签管理器停止工作。 每次打开AMPed页面时,我都会在浏览器控制台中看到一些错误,例如

第一个错误:

https://www.googletagmanager.com/amp.json?id=MY_GTM_TAG&gtm.url=MY_HTTP_URL
(403)

第二个错误:

https://www.googletagmanager.com/amp.json?id=MY_GTM_TAG&gtm.url=MY_HTTP_URL
请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”。响应的HTTP状态代码为403。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源

在扩展
WebMVCConfigureAdapter
的类中,我覆盖了方法
addCorsMappings
,如下所示:

   @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
       .allowedOrigins("*")
       .allowedHeaders("*")
       .allowCredentials(true);
    };
但它仍然不起作用(这个方法是在启动时执行的,我检查了它)。你有什么想法/建议吗?为什么

编辑1(2016年12月22日):

Q:如何加载标签管理器?您使用的是AMP版本的脚本吗?(@Jim Jeffries)

A:是的,在
中,我包含了以下代码:

中有:

<amp-analytics config="https://www.googletagmanager.com/amp.json?id=${googleTagId}&gtm.url=SOURCE_URL" data-credentials="include"></amp-analytics>

基于此,您可能正在对一个不同于页面所在域的域进行访问。因此,浏览器正在阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要执行跨域请求时,您需要执行一些不同的操作。关于如何实现这一点的教程是

*当您使用邮递员时,他们不受本政策的限制。引自:*

常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到同源策略的限制。扩展没有那么有限。扩展可以与其源站之外的远程服务器进行通信,只要它首先请求跨源站权限


同样基于此,应用程序必须作为完全管理员进行身份验证,并将所需的CORS配置发布到
/rest/system/config
我也遇到了同样的问题,结果是您不能使用旧的GTM“Web”容器进行此操作,因此您必须创建特定的AMP容器

根据谷歌的指示,我们发现:

创建放大器容器

标记管理器具有AMP容器类型。为项目创建新的AMP容器:

  • 在帐户屏幕上,单击帐户的更多操作(更多) 你想用。选择创建容器
  • 命名容器。使用描述性名称,例如“example.com-news-AMP”
  • 在“容器的使用位置”下,选择放大器
  • 单击“创建”

  • 如何加载标签管理器?您使用的是AMP版本的脚本吗
    你能在你的问题中包括这个吗?@JimJeffries我包括了你要求的信息。