看起来这一定是一个常见问题,但是我在这里或在更广泛的网络上找不到解决方案。我们的网站通过AJAX调用使用相对URL(例如,使用jQuery)将内容加载到服务器:
$("#mydiv").load("sku123.html",
function(response, status, jqXHR) {
if (status=="error") {
// Failed
}
}
);
工作正常,直到用户请求我们页面的google翻译,然后AJAX调用返回
Failed to contact server, connection failed.
我注意到window.location.href
显示的是Google翻译服务器,而不是我们自己的服务器。因此,我猜想这个AJAX调用将发送给google,这当然对我们试图获取的HTML一无所知(尽管我期望404,而不是“连接失败”)。
这肯定是一个常见问题,但是什么是好的解决方案?我不想将服务器硬编码到这些URL中(否则它将在我们的开发/测试系统上损坏)。
答案 0 :(得分:0)
浏览器控制台显示问题-跨域请求失败。重新配置服务器以允许来自https://translate.googleusercontent.com的CORS,并且一切正常(带有相对URL)。 Tomcat的Web.xml:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>https://translate.googleusercontent.com</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>