Jquery 张贴未更改的有效载荷

Jquery 张贴未更改的有效载荷,jquery,html,forms,Jquery,Html,Forms,我已经模拟了一个表单,我计划使用它将任意值发布到任意URL。我主要使用它来测试通过浏览器开发的web服务。该页面具有用于表单方法和操作的s,以及多对input=“text”控件,用于设置发布的名称/值对 这对于需要默认querystring编码的我的服务非常有效,即: POST http://mysite.com/MyService.svc/CheckUsername HTTP/1.1 User-Agent: Fiddler Host: mysite.com Content-Length: 15

我已经模拟了一个表单,我计划使用它将任意值发布到任意URL。我主要使用它来测试通过浏览器开发的web服务。该页面具有用于表单
方法
操作
s
,以及多对
input=“text”
控件,用于设置发布的名称/值对

这对于需要默认querystring编码的我的服务非常有效,即:

POST http://mysite.com/MyService.svc/CheckUsername HTTP/1.1
User-Agent: Fiddler
Host: mysite.com
Content-Length: 15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

userName=Tester
然而,一些web服务显然需要其他格式的数据。具体来说,我尝试提供的服务是接受XML:

POST http://mysite.com/MyService.svc/checkusername HTTP/1.1
User-Agent: Fiddler
Host: mysite.com
Content-Length: 60
Content-type: text/xml
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

<CheckUsername> <username>tester</username> </CheckUsername>
POSThttp://mysite.com/MyService.svc/checkusername HTTP/1.1
用户代理:Fiddler
主持人:mysite.com
内容长度:60
内容类型:text/xml
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
测试员

如何完全控制表单帖子的有效负载,以便正确构造有效负载?理想情况下,解决方案将仅为HTML,但我还在页面上大量使用jQuery,因此使用它也是一种选择。我知道我可以使用
$.ajax()
完全操纵数据,但除非我弄错了,这不是一个选项,因为是同源策略-我希望此表单能够发布到我的任何网站,而无需将其上载到web服务器。

我认为这里唯一的选项是服务器上的代理脚本,它将使用cURL发出发布请求。(参见PHP示例)。您可以在自己的服务器上发布脚本,然后该脚本将发布到web服务,而不是发布到web服务

如果不适用于跨域请求,则可以轻松提出具有任意正文的POST请求:

$.post(
  'http://example.com',
  '<CheckUsername><username>tester</username></CheckUsername>')
$.post(
'http://example.com',
"测试员")

您也可以使用Flash、CORS或iframe来解决跨域问题,但这需要web服务的配合,即crossdomain.xml文件或Access Control Allow Origin header,我想这不是一个选项。

现代浏览器可以使用AJAX跨域(;jQuery支持开箱即用)但是服务器必须通过在其回复中使用特殊的头来允许它。除此之外,我不认为您可以发布未经URL编码且至少不包含一个=符号的内容。

这听起来麻烦太多了。谢谢你的回答。