我正在尝试让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://是不合法的。
答案 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
的文档