htaccess 重定向适用于邮递员而不适用于 chrome (CORS)

Posted

技术标签:

【中文标题】htaccess 重定向适用于邮递员而不适用于 chrome (CORS)【英文标题】:htaccess redirect working for postman not for chrome (CORS) 【发布时间】:2018-08-01 13:00:45 【问题描述】:

我有一个在 AWS (DomainA) 中运行的 Web 服务,它运行良好。它是使用 JAX-WS 和 Jersey 用 Ja​​va 制作的 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】:

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

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

只有在浏览器中运行它时才会看到 CORS 问题。

【讨论】:

以上是关于htaccess 重定向适用于邮递员而不适用于 chrome (CORS)的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 内部重定向不适用于字符串参数

重定向适用于登录但不适用于注销

FCM - 推送通知仅适用于控制台而不适用于邮递员

ios通用重定向链接不适用于真实设备,但适用于模拟器

.htaccess 重定向桌面但不适用于移动浏览器

AppAuth 登录重定向适用于 iOS,但不适用于 Android