htaccess重定向为postman工作而不是为chrome(CORS)

时间:2018-02-21 20:04:39

标签: java .htaccess rest cors

我有一个在AWS(DomainA)中运行的Web服务,它运行正常。它是使用JAX-WS和Jersey在Java中创建的REST服务。我有一个响应过滤器,可以添加对所有域的访问权限(Access-control-allow-origin *),这应该有效,因为如果我删除它,我甚至无法使Web服务在本地工作。

我在one.com(DomainB)上购买了一个域名,我使用.htaccess将所有请求重定向到DomainA。现在,当我尝试在DomainB上调用一些REST方法时,无论我在哪里调用它都可以正常工作(如果它是GET方法)。如果它是一个POST方法,它也适用于POSTMAN但在Chrome中我得到臭名昭着的:

Failed to load "ServiceB". Redirect from "ServiceB" to "ServiceA" has "MyPage" been blocked by CORS policy: No Access-Control-Allow-Origin is present... 

如果我直接调用DomainA,我可以在我的响应标题中看到所有域都被允许,一切正常。

任何想法为什么CORS在通过我的DomainB时无效?

1 个答案:

答案 0 :(得分:0)

它的Chrome本身会强制执行' CORS - 浏览器添加Origin请求标头(并在必要时进行CORS预检OPTIONS请求)并检查各种CORS响应标头,例如Access-Control-Allow-Origin

浏览器只对fetch / XmlHTTPRequest执行此操作(后者只是前者的包装器)。因此,如果您直接运行Web服务(在实际浏览器之外),则客户端不会进行CORS处理。

只有当您在浏览器中运行它时,才能看到CORS问题。