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

时间:2018-12-11 16:33:33

标签: ajax relative-path google-translate

看起来这一定是一个常见问题,但是我在这里或在更广泛的网络上找不到解决方案。我们的网站通过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中(否则它将在我们的开发/测试系统上损坏)。

1 个答案:

答案 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>