由 Google 编入索引的网页,无需通过 AJAX 加载内容



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

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

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

访问 XMLHttpRequest at '...'从原产地 "https://webcache.googleusercontent.com"已被 CORS 阻止 策略:对预检请求的响应未通过访问控制 检查:它没有 HTTP 正常状态。

我将这些标签添加到我的 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://stackoverflow.com/a/19100808/3247491

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

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

相关内容

  • 没有找到相关文章