【问题标题】:Is CORS considered bad practice?CORS 被认为是不好的做法吗?
【发布时间】:2013-12-08 11:21:30
【问题描述】:

我们正在一个 Intranet 中集成两个系统,使用 CORS 作为跨两个域进行 AJAX 调用的一种方式。

这被认为是不好的做法吗? CORS 通常被认为是不好的做法吗?

【问题讨论】:

  • 如果是这样,W3C 就不会费心为其编写规范了 :) www.w3.org/TR/cors/ CORS 解决了我们需要两个不同网站进行通信的真正需求彼此。这些天我们通常使用 JSONP,但这是一个真正的 hack。一旦 CORS 得到很好的支持,它将成为标准。明智地使用它!
  • 我不会说这是不好的做法。不过,要让它在每个浏览器上都能正常工作可能会很棘手。
  • @MisterEpic,理由是错误的。 Flash 也有一个规范,但这是不好的做法。 Java 也有规范,但这是不好的做法。关于每件事都有一个规范。有规范并不意味着没有不好的做法。

标签: ajax cors


【解决方案1】:

不,CORS 不被视为不好的做法。这是进行跨域 AJAX 调用的标准方式(对于支持它的浏览器)。请记住,目前,根据您的具体要求,可能存在很多陷阱使其跨浏览器工作。例如,如果您希望能够设置跨域 cookie,请准备好使用 Internet Explorer。

所以基本上,如果您可以让 CORS 满足您的需求,请继续使用它。

【讨论】:

    【解决方案2】:

    CORS 是不错的做法。在所有主流浏览器上都是supported,并且越来越多的 API 支持它。事实上,如果你有一个不在防火墙后面的公共资源,it is safeAccess-Control-Allow-Origin: * 标头放在资源上。

    但是对于 CORS 在服务器上的角色存在一些混淆。 CORS 应该只规定特定资源的跨域策略。换句话说,CORS 标头仅用于指示是否允许来自不同来源的请求。我认为混淆是因为服务器有时也使用 CORS 来规定安全策略。 CORS 不是安全性。如果服务器具有需要保护某些用户的资源,则仅依靠 Origin 标头来强制执行此操作是不安全的。您的服务器需要其他一些安全机制(例如 OAuth2 和 CSRF 保护)。

    【讨论】:

    • CORS 关于安全性,但不是为了服务器的利益;这是为了用户/客户的利益。
    【解决方案3】:

    CORS 预检请求会导致一些延迟开销。更多here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 2010-10-22
      • 2011-11-20
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      相关资源
      最近更新 更多