【问题标题】:No CORS needed for mobile apps?移动应用程序不需要 CORS?
【发布时间】:2018-04-24 15:42:32
【问题描述】:

当我制作 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();
});

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

【问题讨论】:

    标签: android ios express react-native cors


    【解决方案1】:

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

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

    【讨论】:

    • 使用像 Ionic 这样的混合移动应用程序,您仍然可以通过使用从设备发送本机请求而不是从 web 视图发送的本机 http 插件来避免 CORS 限制。 ionicframework.com/docs/native/http 用于离子
    猜你喜欢
    • 2017-06-24
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多