Node-Express-CORS问题

时间:2016-12-04 20:58:45

标签: node.js express cors ionic2

离子2

我正在使用登录提供程序,但是当我将访问控制设置为

res.header('Access-Control-Allow-Origin', '*');

无效

但是当我使用

时它可以正常工作

res.header('Access-Control-Allow-Origin', 'http://localhost:8100');

正在工作

但现在我想在手机设备上部署我的应用程序,我需要将其设置为通配符res.header('Access-Control-Allow-Origin', '*');。因为我的手机上的应用程序不再使用http://localhost:8100

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

如果您正在制作preflighted request,则Access-Control-Allow-Origin标题中禁止使用通配符。

您可以阅读Origin请求标题以查找原点。然后,您可以根据允许的来源列表对其进行测试(您还可以假设任何来源都可以,但对于预先发出的请求,完全公共访问很可能存在安全风险)。最后,您可以将其复制到Access-Control-Allow-Origin响应标题中。

答案 1 :(得分:-1)

您的应用的HTTP请求是什么样的?

寻找" CORS请求的类型"在此article

如果您的HTTP请求很简单,即

  • 方法为 function rotateSlower() { ang -= 0.1; if (ang < 0) { stateWheel++; return; } totalSlower += ang; if (totalSlower>= 360) totalSlower -= 360; angT += ang; if (angT >= 360) angT -= 360; transform.rotation = Quaternion.Euler(-angT, 0.0, 0.0); } function rotateReverse() { angT -= 0.4; if (angT < angleStop) { angT = Mathf.RoundToInt(angT); stateWheel++; } transform.rotation = Quaternion.Euler(-angT, 0.0, 0.0); } function finished() { index = Mathf.RoundToInt(angT/18); if (index == 0) index += 20; angleStart = angT; stateWheel = 0; } HEADGET
  • 只有这些标题
    • POST
    • Accept
    • Accept-Language
    • Content-Language
    • Last-Event-ID Content-Typeapplication/x-www-url-encodedmultipart/form-data

如果您的HTTP请求很简单,则不需要预检。移动应用已接受text/plain Access-Control-Allow-Origin。{/ p>

否则,将进行预检请求(即*请求),OPTION的{​​{1}}将被忽略。它必须完全指定为Access-Control-Allow-Origin