移动应用程序不需要CORS吗?

Ave*_*235 5 android cors ios express react-native

在制作Web应用程序时,通常必须将这些标头添加到Express中以允许CORS请求。

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  next();
});
Run Code Online (Sandbox Code Playgroud)

但是,借助React Native移动应用程序,我不必这样做。为什么?

小智 35

CORS 的目的是防止在一个域加载的网页发出 AJAX 请求或将数据修改到其他域的 HTTP 请求。它的工作方式是,Web 浏览器被构建为在任何此类跨站点请求之前发送预检 HTTP OPTIONs 请求,并且服务器将发送回带有 Access-Control-* 标头的消息,指定其 CORS 策略,并且浏览器将根据它被告知可以做什么来继续或中止请求。由于本机应用程序根本不是从任何域加载的网页,因此不需要或应用 CORS 限制,应用程序的 HTTP 函数从不发送 OPTIONS 预检,并且服务器在没有 CORS 进入的情况下处理请求。如果您要在 Postman 中尝试这些请求,情况也是如此。但是请注意,如果您要使用混合移动应用程序(Cordova/Ionic/Phonegap 等),

https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

  • 使用 Ionic 等混合移动应用程序,您仍然可以通过使用从设备发送本机请求而不是从 Web 视图发送的本机 http 插件来避免 CORS 限制。https://ionicframework.com/docs/native/http 用于离子 (2认同)