1

我正在尝试让 CORS 在我的 trigger.io 应用上运行:

我的 .htaccess 中有以下设置

Header set Access-Control-Allow-Headers: "Accept,Origin,Content-Type,X-Requested-With"
Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE,OPTIONS"
Header set Access-Control-Allow-Credentials: "true"
Header set Access-Control-Allow-Origin "http://localhost:3000,content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c"

在 web (localhost:3000) 中运行触发器应用程序工作正常。

但是当我将它部署到(android)设备时,我在调试输出中看到以下错误:

[ERROR] XMLHttpRequest cannot load {link}http://mydevtest.lan/api/auth/currentuser.{/link} Origin content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c is not allowed by Access-Control-Allow-Origin. -- From line 1 of null

我担心在 Access-Control-Allow-Origin 标头中设置 content:// 是不合法的。

4

2 回答 2

2

您拥有的 Access-Control-Allow-Origin 标头无效。有效值为“*”或以空格分隔的来源列表。以下其中一项应该有效:

Header set Access-Control-Allow-Origin "*"

或者

Header set Access-Control-Allow-Origin "http://localhost:3000 content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c"

请注意,我从未测试过后一种形式(具有多个来源)。虽然 CORS 规范允许,但浏览器可能还不支持它。

您可以做的另一件事是读取Origin标头的值,在您的服务器上验证它(即手动检查该值是否等于“http://localhost:3000”或“content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c” ),然后仅在Access-Control-Allow-Origin响应标头中回显该值。然而,这需要更多的工作,因为它引入了一些服务器端条件处理。

于 2013-01-22T17:49:55.347 回答
1

我也担心 CORS 中不允许 content:// ,您可以尝试设置Access-Control-Allow_origin*,如果可行,那么这可能是问题所在。

一个更好的解决方案是避免执行 XHR 请求并使用 forge.request.ajax 它将从本机代码发出请求并避免任何跨域限制。您可以在此处找到相关文档http://docs.trigger.io/en/v1.4/modules/request.html#modules-request

于 2013-01-22T17:40:13.673 回答