【问题标题】:How is a cross site ajax request different from a normal form post?跨站点 ajax 请求与普通表单帖子有何不同?
【发布时间】:2015-07-19 23:37:05
【问题描述】:

我一直在开发一个支持 ajax 的网站,当然也遇到了使用 ajax 进行跨站点请求的问题(我正在执行登录,因此我需要 POST 到我的 API 端点)。我已经阅读了 CORS 以及如何响应请求以允许这样做。

我的问题是:这个 ajax 请求如何更不安全和正常(例如,来自表单)POST 请求?

这个 ajax 请求不使用与普通请求相同的路由、HTTP 方法等吗?它的输入不需要像任何请求一样进行验证吗?

如果我没记错的话,如果我创建一个普通表单并将操作设置到另一个站点,它将起作用。这不是和ajax POST 一样吗?

谢谢

【问题讨论】:

    标签: javascript ajax http-headers xmlhttprequest


    【解决方案1】:

    当您从表单 POST 时,您的网页将始终重定向到 POST 返回的任何内容,并且用户将知道正在执行某项操作。

    AJAX 请求永远不会更改您的网页(除非您以编程方式进行),因此如果您可以向另一个域发出 AJAX 请求,用户永远不会注意到网页中的脚本正在访问其他域。

    CORS 的存在是因为Same Origin Policy

    防止一个页面上的恶意脚本通过该页面的文档对象模型访问另一个网页上的敏感数据。

    这种机制对于广泛依赖 HTTP cookie 来维护经过身份验证的用户会话的现代 Web 应用程序具有特殊意义

    如果您可以使用 ajax 向任何站点发出 POST 请求,那么您可以修改任何站点中的任何设置,而不会引起用户的注意。那将是一个安全问题。

    【讨论】:

    • 所以基本上这只是一个浏览器的东西?命令行curl 等其他工具也能正常工作吗?
    • 是的,没错,SOP 和 CORS 是只有浏览器才能实现的安全策略。 curl 就可以了。
    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2010-09-24
    • 2015-01-28
    • 2011-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多