主要问题是我网站的页面在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)]
现在谷歌可以正确地看到页面。