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

时间:2015-07-19 23:37:05

标签: javascript ajax http-headers xmlhttprequest

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

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

这个ajax请求是否使用正常请求将使用的相同路由,HTTP方法等?它的输入是否需要像任何请求一样进行验证?

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

由于

1 个答案:

答案 0 :(得分:0)

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

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

CORS因Same Origin Policy

而存在
  

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

     

此机制对于广泛依赖HTTP Cookie以维护经过身份验证的用户会话的现代Web应用程序具有特别重要性

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