小编典典

跨域表单发布

all

我已经看过关于这个主题的所有文章和帖子(包括 SO),流行的评论是同源策略阻止跨域的表单
POST。我看到有人建议同源政策不适用于表单帖子的唯一地方是这里

我想从更“官方”或正式的来源获得答案。例如,有没有人知道 RFC 解决了同源如何影响或不影响表单 POST?

澄清 :我不是在问是否可以构造 GET 或 POST 并将其发送到任何域。我在问:

  1. 如果 Chrome、IE 或 Firefox 允许来自域“Y”的内容向域“X”发送 POST
  2. 如果接收 POST 的服务器实际上会看到任何表单值。我这样说是因为大多数在线讨论记录测试人员说服务器收到了帖子,但表单值都是空的/被剥离了。
  3. 什么官方文档(即 RFC)解释了预期的行为是什么(不管浏览器当前实现了什么)。

顺便说一句,如果同源不影响表单 POST - 那么它就更清楚地说明了为什么需要防伪令牌。我说“有点”,因为似乎太容易相信攻击者可以简单地发出 HTTP
GET 来检索包含防伪令牌的表单,然后发出包含相同令牌的非法 POST。注释?


阅读 81

收藏
2022-08-21

共1个答案

小编典典

同源策略仅适用于浏览器端编程语言。因此,如果您尝试使用 JavaScript
发布到与原始服务器不同的服务器,那么相同的原始策略就会发挥作用,但如果您直接从表单发布,即操作指向不同的服务器,例如:

<form action="http://someotherserver.com">

并且发布表单时不涉及 javascript,则不适用同源策略。

有关更多信息,请参见维基百科

2022-08-21