跨站点 ajax 请求与普通表单 post 有何不同?

How is a cross site ajax request different from a normal form post?

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

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

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

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

谢谢

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

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

CORS 存在是因为 Same Origin Policy

prevents a malicious script on one page from obtaining access to sensitive data on another web page through that page's Document Object Model.

This mechanism bears a particular significance for modern web applications that extensively depend on HTTP cookies to maintain authenticated user sessions

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