google 索引的页面没有通过 ajax 加载内容

pages indexed by google without content load via ajax

主要问题是我网站在 google cached 的页面不完整,没有数据,因为 XHR 错误,这里有一些细节:

我使用 AngularJs 实现了我的网站,它在我测试过的任何浏览器和位置上都能正常工作。 Google 说,“Google Search Engine 准确地看到了 modern browsers 显示的内容”,但是我的网站还没有正确编入索引,所以我的代码有问题!

我一直在努力 google 将我的网站页面完全介绍给 Google,但我得到的只是带有未填充控件且没有通过 [ 加载的任何数据的页面=34=]。当我在 Google Live Test 上查看我的网站时,我在 Page Resources 中收到此类错误:“Couldn't be loaded” 其中一些错误与目前无关紧要的图像有关,但紧急问题是大多数 XHRs 无法加载! 没有详细信息可以知道确切的问题是什么,但是当我在 google 上检查我的网站缓存页面时,我在开发人员工具上看到了这个错误:

Access to XMLHttpRequest at '…' from origin 'https://webcache.googleusercontent.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

我将这些标签添加到我的 web.config 但实时测试和 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" />

你能告诉我我应该怎么做才能解决这个问题吗?

我从这些链接中找到了解决方案:

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 可以正确查看页面。