使用expo到express server时没有请求标头来源

使用expo到express server时没有请求标头来源,express,react-native,expo,Express,React Native,Expo,我正在学习React Native,我正在用expo在我的手机上测试它,我正在尝试远程调用一个api,该api与我的React捆绑包在web服务器和本地主机上都能完美地工作 我的app.js var allowedOrigins = ['http:// localhost:3000', 'http:// site.com']; app.use(function(req, res, next) { const origin = req.headers.origin; res.he

我正在学习React Native,我正在用expo在我的手机上测试它,我正在尝试远程调用一个api,该api与我的React捆绑包在web服务器和本地主机上都能完美地工作

我的app.js

var allowedOrigins = ['http:// localhost:3000', 'http:// site.com'];

app.use(function(req, res, next) {
    const origin = req.headers.origin;
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Credentials', true);
    if(allowedOrigins.indexOf(origin) > -1){
        res.setHeader('Access-Control-Allow-Origin', origin);
    }
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorizati$
    next();
});
问题是,当我尝试从应用程序调用api时,req头中没有来源

App.js(React native)

从expo访问时的req.headers如下所示

{ connection: 'upgrade',
  host: 'api.site.com',
  'if-none-match': 'W/"19f-pkIEHBJ9V3GhwsEXhmyI2oBhsbo"',
  accept: '*/*',
  'user-agent': 'Expo/2.6.7.1015752 CFNetwork/889.9 Darwin/17.2.0',
  'accept-language': 'en-us',
  'accept-encoding': 'br, gzip, deflate' }
我是否在学习react for web和react native for apps之间遗漏了一步

是发出请求的网站的URL,因此不适用于移动应用程序

没有必要为移动应用设置标题,因为只有浏览器限制跨源请求


如果您的移动应用程序无法向服务器发出请求,则问题出在其他地方。

后端当前用于本地主机和域,那么您是否建议我仅为没有cors的移动设备创建另一个后端服务?因为如果我使用*,然后,它会中断需要web版本上的凭据的操作保持原样。您的移动应用程序是否有任何请求错误?应用程序本身没有错误,但问题是后端需要一个源来响应api调用您的后端为什么需要一个源来响应api调用?
{ connection: 'upgrade',
  host: 'api.site.com',
  'if-none-match': 'W/"19f-pkIEHBJ9V3GhwsEXhmyI2oBhsbo"',
  accept: '*/*',
  'user-agent': 'Expo/2.6.7.1015752 CFNetwork/889.9 Darwin/17.2.0',
  'accept-language': 'en-us',
  'accept-encoding': 'br, gzip, deflate' }