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
”
其中一些错误与目前无关紧要的图像有关,但紧急问题是大多数 XHR
s 无法加载!
没有详细信息可以知道确切的问题是什么,但是当我在 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" />
你能告诉我我应该怎么做才能解决这个问题吗?
我从这些链接中找到了解决方案:
首先,我从 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 可以正确查看页面。
主要问题是我网站在 google cached
的页面不完整,没有数据,因为 XHR
错误,这里有一些细节:
我使用 AngularJs
实现了我的网站,它在我测试过的任何浏览器和位置上都能正常工作。
Google 说,“Google Search Engine
准确地看到了 modern browsers
显示的内容”,但是我的网站还没有正确编入索引,所以我的代码有问题!
我一直在努力 google 将我的网站页面完全介绍给 Google,但我得到的只是带有未填充控件且没有通过 [ 加载的任何数据的页面=34=]。当我在 Google Live Test
上查看我的网站时,我在 Page Resources
中收到此类错误:“Couldn't be loaded
”
其中一些错误与目前无关紧要的图像有关,但紧急问题是大多数 XHR
s 无法加载!
没有详细信息可以知道确切的问题是什么,但是当我在 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" />
你能告诉我我应该怎么做才能解决这个问题吗?
我从这些链接中找到了解决方案:
首先,我从 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 可以正确查看页面。