0

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

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

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

从源“ https://webcache.googleusercontent.com ”访问“...”处的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。

我将这些标签添加到我的 web.config 中,但 Live Test 和 Google Index 没有变化:

<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" />

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

4

1 回答 1

1

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

https://stackoverflow.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)]

现在谷歌可以正确看到页面。

于 2019-09-11T08:35:03.083 回答