如何将通过Web代理工具捕获的REST HttpRequest转换为用户可以单击的链接?

时间:2014-05-27 19:41:46

标签: rest httprequest

我使用proxy tool来捕获某个REST HttpRequest。该请求是一个HTTP PUT命令,后跟一个非常长的REST链接,其中包含发送到服务器的特定数据。

在代理工具中,它看起来像这样:

标题

PUT http://XXX.XXX.XXX.XXX:8080/rest/blah/blah/.../ HTTP/1.1
Host: XXX.XXX.XXX.XXX:8080
User-Agent: Mozilla/5.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-language: en-us, en:q=0.5
Proxy Connection:keep-alive
Content-Type:XMLHttpRequest
Referer: http://XXX.XXX.XXX.XXX:8080/plugins/blah/blah
Content-length: 11156
Cookie: JSESSIONID=<really long alpha numeric>

身体:

{"links":{"self":"/rest/plugins/1.0/blah/blah.....
     ... 
     ... lots and lots of JSON text
}

}

因此代理工具有助于识别请求的外观。

但是,生成此请求的唯一方法是单击网页上的按钮。我想自己发送完全相同的请求(比如创建一个自定义链接,当点击时生成类似于上面显示的请求)。我该怎么做呢?

此外,我在网络浏览器网址区域自动输入的任何内容都是&#34; GET&#34;。我如何强制PUT?

1 个答案:

答案 0 :(得分:0)

  

Cookie:JSESSIONID =

这清楚地表明您要使用的API不是REST API,因为它违反了REST的无状态约束。

  

如何强制使用PUT?

可能你没有办法做到这一点。这取决于Web API的安全设置。如果您希望从浏览器使用AJAX执行此操作,并且您的域与API域不同,那么您需要API中的CORS标头,这允许您的域读取跨源响应。通过PUT,浏览器首先发送预检,如果它无法读取响应,它将永远不会发送真正的PUT。安全策略和其他标头可以阻止浏览器中的XSS,因此您可能无法通过浏览器执行此操作。

您可以通过复制请求详细信息并以某种方式捕获会话ID来从服务器执行此操作。

如果API允许访问第三方客户端,那么我建议您与他们联系。如果没有,那么你99%的胜利是你无法做到的。