Trigger.IO CORS设置

时间:2013-01-22 17:30:48

标签: .htaccess cors trigger.io

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

我的.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"

在网络上运行触发器应用程序(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://是不合法的。

2 个答案:

答案 0 :(得分:2)

您拥有的Access-Control-Allow-Origin标头无效。有效值为“*”或space separated list of origins。以下之一应该有效:

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响应头中的该值。然而,这需要更多的工作,因为它引入了一些服务器端条件处理。

答案 1 :(得分:1)

我还担心CORS中不允许使用内容://你是否可以尝试将Access-Control-Allow_origin设置为*,如果可行则可能是问题。

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

的文档