谷歌索引的页面没有通过ajax加载内容
Posted
技术标签:
【中文标题】谷歌索引的页面没有通过ajax加载内容【英文标题】:pages indexed by google without content load via ajax 【发布时间】:2020-01-10 09:24:30 【问题描述】:主要问题是我的网站在google cached
的页面不完整,没有数据,因为XHR
错误,这里有一些细节:
我使用AngularJs
实现了我的网站,它可以在我测试过的任何浏览器和位置上正常工作。
谷歌说,“Google Search Engine
看到 modern browsers
显示的内容”,但我的网站还没有正确索引,所以我的代码有问题!
我一直在努力与 google 一起将我的网站页面完全介绍给 Google,但我得到的只是带有未填充控件且没有任何通过 Angular 加载的数据的页面。当我在Google Live Test
上查看我的网站时,我在Page Resources
中收到这种错误:“Couldn't be loaded
”
其中一些错误与现在无关紧要的图像有关,但紧急问题是大多数XHR
s 无法加载!
没有详细信息可以知道确切的问题是什么,但是当我在谷歌上检查我的网站缓存页面时,我在开发者工具上看到了这个错误:
从源访问“...”处的 XMLHttpRequest 'https://webcache.googleusercontent.com' 已被 CORS 阻止 策略:对预检请求的响应未通过访问控制 检查:它没有 HTTP ok 状态。
我在 web.config 中添加了这些标签,但 Live Test 和 Google 索引没有变化:
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value=" content-type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
你能告诉我我应该怎么做才能解决这个问题吗?
【问题讨论】:
您的 Web 服务器 (IIS?) 未正确处理作为预检请求的 OPTIONS 方法。这个答案可能会帮助***.com/a/21458845/3574481 @peeebeee 感谢您的评论,我从这个 URL 找到了解决方案,虽然不是您共享链接的那个,而是确认的答案 【参考方案1】:我从这些链接中找到了解决方案:
https://***.com/a/19100808/3247491
https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api#enable-cors
首先我从 web.config 中删除了这些代码
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="content-type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
</customHeaders>
</httpProtocol>
然后我添加了 CORS NuGet 包
Microsoft.AspNet.WebApi.Cors
接下来将config.EnableCors();
添加到webApiConfig
,
public static void Register(HttpConfiguration config)
config.EnableCors();
最后把这个属性加到所有的apiControllers
[EnableCors(origins: "*", headers: "*", methods: "*", PreflightMaxAge = TimeSpan.TicksPerDay)]
现在 google 可以正确看到页面了。
【讨论】:
以上是关于谷歌索引的页面没有通过ajax加载内容的主要内容,如果未能解决你的问题,请参考以下文章
如何让Googlebot抓取从AJAX加载的内容,但阻止它对网址命中的索引?