谷歌索引的页面没有通过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” 其中一些错误与现在无关紧要的图像有关,但紧急问题是大多数XHRs 无法加载! 没有详细信息可以知道确切的问题是什么,但是当我在谷歌上检查我的网站缓存页面时,我在开发者工具上看到了这个错误:

从源访问“...”处的 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加载的内容,但阻止它对网址命中的索引?

ajax 加载内容与普通内容?

加载没有css冲突的ajax响应(html内容数据)

单击时清除 CSS 菜单悬停状态(通过 ajax 加载的页面)

是否可以通过 Ajax 更改页面源内容变量

jQuery选项卡 - 获取新选择的索引