Forms 按程序发布';创建表单并不是我的浏览器所做的事情。为什么?

Forms 按程序发布';创建表单并不是我的浏览器所做的事情。为什么?,forms,http,post,Forms,Http,Post,我正在尝试以编程方式在我不拥有的网站上提交表单。我正在尝试模拟使用web浏览器手动执行的操作。我正在使用HTTP库发出HTTP POST请求 由于某种原因,我不知道当我以编程方式提交表单时,与在web浏览器中手动提交表单相比,我会得到不同的结果(错误、不同的响应…) 这怎么可能?我怎么才能知道我犯了什么错误 这个问题是语言和图书馆不可知的。我要求提供调试此类问题的一般程序。此问题的所有实例都是等效的。以下是如何解决所有这些问题: 您发布到的网站无法区分不同的客户端。它无法确定您使用的是web浏览

我正在尝试以编程方式在我不拥有的网站上提交表单。我正在尝试模拟使用web浏览器手动执行的操作。我正在使用HTTP库发出HTTP POST请求

由于某种原因,我不知道当我以编程方式提交表单时,与在web浏览器中手动提交表单相比,我会得到不同的结果(错误、不同的响应…)

这怎么可能?我怎么才能知道我犯了什么错误


这个问题是语言和图书馆不可知的。我要求提供调试此类问题的一般程序。

此问题的所有实例都是等效的。以下是如何解决所有这些问题:

您发布到的网站无法区分不同的客户端。它无法确定您使用的是web浏览器还是HTTP库。因此,只有您发送的内容才对服务器如何作出反应的决定有影响

如果您观察到来自服务器的不同响应,则表示您正在发送不同的请求。

您可能必须正确发送一些重要信息:

  • 网址
  • 动词(
    GET
    POST
  • 标题:
    主机
    用户代理
    内容长度
  • Cookies(Cookie的
    Cookie
    Set Cookie
    标题)
  • 请求机构
使用类似于Fiddler的HTTP嗅探器捕获以编程方式发送的内容和浏览器发送的内容。比较不同的请求。逐个消除差异,看看是哪一个导致了问题。您可以将HTTP请求拖到Composer窗口中,以便能够修改和重新发出它


如果您真正消除了手动请求和编程请求之间的所有差异,就不可能仍然得到不同的结果。

此问题的所有实例都是等效的。以下是如何解决所有这些问题:

您发布到的网站无法区分不同的客户端。它无法确定您使用的是web浏览器还是HTTP库。因此,只有您发送的内容才对服务器如何作出反应的决定有影响

如果您观察到来自服务器的不同响应,则表示您正在发送不同的请求。

您可能必须正确发送一些重要信息:

  • 网址
  • 动词(
    GET
    POST
  • 标题:
    主机
    用户代理
    内容长度
  • Cookies(Cookie的
    Cookie
    Set Cookie
    标题)
  • 请求机构
使用类似于Fiddler的HTTP嗅探器捕获以编程方式发送的内容和浏览器发送的内容。比较不同的请求。逐个消除差异,看看是哪一个导致了问题。您可以将HTTP请求拖到Composer窗口中,以便能够修改和重新发出它

如果您真正消除了手册和编程请求之间的所有差异,就不可能仍然得到不同的结果。

可能是cookies(例如,反CSRF)可能是cookies(例如,反CSRF)