跨站点 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 请求,那么您可以在用户不注意的情况下修改任何站点中的任何设置。那将是一个安全问题。
我一直在开发一个由 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 请求,那么您可以在用户不注意的情况下修改任何站点中的任何设置。那将是一个安全问题。