我使用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?
答案 0 :(得分:0)
Cookie:JSESSIONID =
这清楚地表明您要使用的API不是REST API,因为它违反了REST的无状态约束。
如何强制使用PUT?
可能你没有办法做到这一点。这取决于Web API的安全设置。如果您希望从浏览器使用AJAX执行此操作,并且您的域与API域不同,那么您需要API中的CORS标头,这允许您的域读取跨源响应。通过PUT,浏览器首先发送预检,如果它无法读取响应,它将永远不会发送真正的PUT。安全策略和其他标头可以阻止浏览器中的XSS,因此您可能无法通过浏览器执行此操作。
您可以通过复制请求详细信息并以某种方式捕获会话ID来从服务器执行此操作。
如果API允许访问第三方客户端,那么我建议您与他们联系。如果没有,那么你99%的胜利是你无法做到的。