谷歌翻译破坏了我的AJAX加载(相对URL)的内容



这似乎是一个常见的问题,但我在这里或更广泛的网络上找不到解决方案。我们的网站通过AJAX调用将内容加载到具有相对URL的服务器(例如使用jQuery(:

$("#mydiv").load("sku123.html", 
function(response, status, jqXHR) {
if (status=="error") {
// Failed
}
}
);

工作正常,直到用户请求我们页面的谷歌翻译,然后AJAX调用返回

Failed to contact server, connection failed.

我注意到window.location.href显示的是谷歌翻译服务器,而不是我们自己的。所以我猜这个AJAX调用将转到谷歌,谷歌当然对我们试图获取的HTML一无所知(尽管我希望得到404,而不是"连接失败"(。

这肯定是一个常见的问题,但什么是好的解决方案?我不想把我们的服务器硬编码到这些URL中(然后它会破坏我们的开发/测试系统(。

浏览器控制台显示了问题-跨域请求失败。重新配置服务器以允许CORShttps://translate.googleusercontent.com并且一切都如预期的那样工作(使用相对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>

最新更新