ASP Classic从curl POST -F解析数据

时间:2018-10-17 07:40:32

标签: vbscript asp-classic

我有以下指向我的服务的CURL请求:

curl -X POST \
  http://go.example.com/ \
  -H 'Cache-Control: no-cache' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Postman-Token: cf0c1ab5-08ff-1aa2-428e-24b855e1a61c' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F fff=vvvvv \
  -F rrrr=ddddd \
  -F xx=something

我试图抓住经典ASP代码中的xx参数。 我尝试了“ Request(“ xx”)'和'Request.Form(“ xx”)'。

你有什么主意吗?

1 个答案:

答案 0 :(得分:2)

这是来自CURL documentation

  

-F,--form

     

(HTTP SMTP IMAP)对于HTTP协议系列,它可以使curl模仿用户按下提交按钮时所填写的表单。 这会导致卷曲,从而根据RFC 2388使用Content-Type multipart / form-data

使用内容类型为multipart/form-data的表单将表单提交到Classic ASP时,唯一可用的方法是Request.BinaryRead(),因为Request.Form用于application/x-www-form-urlencoded数据。

以下是调用Request.BinaryRead()入门的快速示例:

<%
'Should be less than configured request limit in IIS.
Const maxRequestSizeLimit = ...
Dim dataSize: dataSize = Request.TotalBytes
Dim formData

If dataSize < maxRequestSizeLimit Then
  'Read bytes into a SafeArray
  formData = Request.BinaryRead(dataSize)
  'Once you have a SafeArray its up to you to process it.
  ...
Else
  Response.Status = "413 PAYLOAD TOO LARGE"
  Response.End
End If
%>

解析SafeArray并不容易

如果您仍要使用Request.Form,可以通过使用-d而不是-F在CURL命令中指定表单参数来完成。来自the documentation

  

-d,--data

     

(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按Submit按钮时浏览器所做的一样。 这将导致curl使用内容类型application / x-www-form-urlencoded将数据传递到服务器。与-F,-form进行比较。

因此CURL命令类似于;

curl -X POST \
  http://go.mytest-service.com/ \
  -H 'Cache-Control: no-cache' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d fff=vvvvv \
  -d rrrr=ddddd \
  -d xx=something

然后您将使用以下方法在Classic ASP中检索xx参数

<%
Dim xx: xx = Request.Form("xx")
%>

有用链接