[我试图解决一个我认为我已经工作多年的CORS问题,然后突然在上周一,所涉及的服务器没有任何更改,该API开始因CORS错误而失败。
服务器是:运行基于PHP的应用程序的CMS和运行Java Servlet的API服务器。来自PHP服务器的调用来自具有JavaScript(jQuery1.12)和一个非常简单的AJAX调用的HTML页面。 Servlet端在Tomcat 8上运行。同样,在上周一(1月6日)之前,它运行良好。
这是我要整理的内容:应在何处为“ Access-Control-Allow-Origin”,“ *”设置响应标头?当页面在客户端或servlet端被重新修改时,在PHP端是什么?我知道必须设置它,并且它是在Servlet的响应中设置的,但是即使在命中servlet api之前,控制台中也会出现错误。没有什么比Servlet更重要的了。因此,也许我一直以来都过着令人着迷的生活,即使servlet是设置响应的错误位置,api仍然可以奇迹般地工作。
FWIW客户端设置如下:
$.ajax({ url: ajaxURL, sync: false, cache: false, success: function (response) { } });
servlet端像这样设置响应头:
response.setHeader("Access-Control-Allow-Origin", "*");
但是一旦进行AJAX调用,浏览器就会返回错误。因此,也许我误解了它应该如何工作,但是它一直在工作。
因此,我想问题是:在进行客户端ajax调用时,是否足以返回带有servlet有效负载的响应标头,还是已经“为时已晚”?我只需要清楚地了解哪个服务器设置了标头:该服务器服务于客户端页面,该客户端页面进行调用或从servlet返回响应?
我正在尝试解决一个我认为我已经工作多年的CORS问题,然后突然在上周一,所涉及的服务器没有任何更改,该API开始失败并出现CORS错误。 ...
这是api服务器上的一个阻止响应的问题(正如我在上面的评论中指出的那样)。这不是由于CORS造成的(尽管控制台中也存在此错误)。我应该更加注意403错误...