Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HTTP POST时在URL中传递参数_Http_Iis_Url_Soap_Post - Fatal编程技术网

使用HTTP POST时在URL中传递参数

使用HTTP POST时在URL中传递参数,http,iis,url,soap,post,Http,Iis,Url,Soap,Post,使用POST方法时,是否允许通过URL(问号后)向网页传递参数?我知道它是有效的(大多数时候,无论如何),因为我公司的webapp经常这样做,但我不知道它是否在标准中得到了支持,或者我是否可以依赖这种行为。我正在考虑实现一个SOAP请求处理程序,它在问号后面使用一个参数来表示它是一个SOAP请求,而不是一个普通的HTTP请求。原因是webapp是一个IIS扩展,所以所有内容都是通过相同的URL(例如:example.com/myisapi.dll?命令)访问的,所以要处理SOAP请求,我需要指定

使用POST方法时,是否允许通过URL(问号后)向网页传递参数?我知道它是有效的(大多数时候,无论如何),因为我公司的webapp经常这样做,但我不知道它是否在标准中得到了支持,或者我是否可以依赖这种行为。我正在考虑实现一个SOAP请求处理程序,它在问号后面使用一个参数来表示它是一个SOAP请求,而不是一个普通的HTTP请求。原因是webapp是一个IIS扩展,所以所有内容都是通过相同的URL(例如:example.com/myisapi.dll?命令)访问的,所以要处理SOAP请求,我需要指定“command”参数。SOAP将有一个通用命令,而不是每个SOAP操作的特定命令——这些命令将在SOAP请求本身中指定

基本上,我正在尝试将ApacheAxis2/C库集成到我的webapp中,方法是让webapp处理HTTP请求,然后将传入的SOAP XML传递给Axis2,以便处理SOAP请求。直观地说,我看不出有什么理由不起作用,因为您发布到的URL只是一个任意URL,就所有组件而言。。。是服务器给问号后面的部分赋予了特殊的意义


感谢您提供的任何帮助/见解。

如果您询问是否可以在单个HTTP请求中通过GET和POST发送参数,则回答为“是”。这是可以在AIK中可靠使用的标准功能

其中一个示例是将身份验证凭据分为两部分发送,一部分通过GET发送,另一部分通过POST发送,因此任何劫持会话的尝试都需要劫持GET和POST变量


因此,在您的情况下,您可以使用POST来包含实际的SOAP请求,但根据GET中传递的参数(或者通过URL)来测试它是否是SOAP请求。

我在英国部署了一个带有3(移动网络运营商)的web应用程序。它最初使用POST参数,但3网关去掉了它们(以及X头文件!)。所以当心…

允许吗?当然,这是可行的,但我倾向于规范,建议双重方法不一定会发生,也不一定会得到支持。定义了HTTP/1.1,我认为每个请求只建议一个方法。如果您从客户端考虑典型的HTTP事务,您也可以看到其局限性:

$ telnet localhost 80
POST /page.html?id=5 HTTP/1.1
host: localhost
如您所见,您只能使用一种方法(POST/GET等),但是由于各种语言的操作性质,它们可能会提取查询字符串,并将其分配给GET变量。但最终,这是一个POST请求,而不是GET


所以基本上,是的这个功能是存在的,是有意的吗?我想说,不,让我们从简单的事情开始。HTTP GET请求变量来自URI。URI是请求的资源,因此任何Web服务器都应该(和apache一样)将整个URI存储在某个变量中,该变量可供在Web服务器中运行的模块或appserver组件使用

与http GET不同的http POST是对Web服务器的单独逻辑调用,但它仍然定义了一个应该处理POST的URI。一个好的Web服务器(apache就是其中之一)将再次使URI可用于其中运行的任何模块或appserver,然后将另外使POST头中发送的变量可用


当应用程序在POST过程中从apache获得控制时,您应该可以访问GET和POST变量,并能够执行任何您想要的控制逻辑,包括使用SOAP协议而不是HTML进行回复。

我相信没有任何标准真正定义了“HTTP参数”或“请求变量”的概念. RFC1738定义URL可能有一个“搜索部分”,即问号后的子字符串。HTML在表单提交协议中指定处理表单元素的浏览器应如何提交表单元素。在这两种情况下,服务器端如何处理搜索部分和HTTP主体完全取决于服务器—丢弃这两个部分将符合这两个规范(但毫无用处)

为了确定是否可以将搜索部分发布到特定服务,需要研究该服务的协议规范。如果服务实际上是通过HTML表单定义的,那么就不能使用混合-如果表单指定GET,甚至不能使用POST(反之亦然)。如果您发布到一个web服务,您需要查看web服务的WSDL——它通常要求发布;在SOAP消息中包含所有数据。等等


特定的web框架可能有“请求变量”的概念——无论它们是否会从搜索部分和请求体中提取这些变量,您都需要在产品文档中找到。

您的示例正是我所说的。。。一种POST请求,其中URL在问号后包含一些参数。这将由服务器决定它是否工作,对吗?如果是这样的话,我知道它可以在IIS上工作,所以我可以信赖它,对吗?@Owen:据我所知,没有人建议使用两种方法——只是在POST URL上使用参数。这没什么问题。@Jon:是的,我同意。@rmeador:我认为困惑可能是谁在处理什么。即,服务器处理方法(POST/GET),语言处理解析URL的searchpart(单独关注)。因此,只要您的语言支持,就不会有问题。我知道这是一篇非常古老的文章,但有时在身份验证中,凭证不能包含在请求uri中。仍在试图找出原因…