【问题标题】:How can I prevent Backbone.js from sending OPTIONS request?如何防止 Backbone.js 发送 OPTIONS 请求?
【发布时间】:2016-04-17 06:22:06
【问题描述】:

我的cordova 应用程序使用backbone.js 与我的服务器通信。由于该应用程序显然没有在与我的 API 相同的域下运行,因此每个重要的 ajax 请求都通过 OPTIONS 飞行前发送。我明白为什么会这样。但是,我可以完全控制自己的服务器!我确切地知道,支持哪些 http 方法和标头。因此,OPTIONS 请求不是浪费时间吗?如何禁用它?

【问题讨论】:

    标签: javascript cordova http backbone.js cors


    【解决方案1】:

    你说你知道它为什么提出请求,但是为那些不知道的人提供一些上下文MDN describes the conditions that you'll get a preflighted request

    不,您不能禁用它。

    作为客户端代码的作者,您知道要提出什么请求。

    作为服务器端代码的作者,您知道要接受哪些请求。

    作为编写用户浏览器的公司,Google(或 Mozilla、Opera 等)并不知道您是这两个网站的作者并且您信任自己。他们不知道站点 A 要求浏览器向站点 B 发出的请求是无害的。

    在使用 CORS 之前,作者只需担心防御可能由链接和表单发起的 CSRF 攻击。

    随后出现了 XHR,突然 http://evil.example.com 上的 JavaScript 可以触发 DELETEhttp://victim.example.com 的请求,并启用 withCredentials。如果服务器处理了它,响应浏览器,然后浏览器告诉 JS 引擎没有 Access-Control 标头,那将是非常糟糕的。内容已被删除。

    所以你需要预检才能获得许可。

    所以这不是浪费时间。你不能禁用它。您只需在获得许可的情况下回复即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-07
      • 2013-07-05
      • 1970-01-01
      • 2011-02-16
      • 2018-12-18
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      相关资源
      最近更新 更多