你如何强制Web浏览器来使用POST得到一个URL时?
Answer 1:
使用HTML表单指定出任方法:
<form method="post" action="/my/url/">
...
<input type="submit" name="submit" value="Submit using POST" />
</form>
如果你要做到这一点作为一个链接(不推荐),你可以有一个onclick处理动态地构建一个表格并提交。
<script type="text/javascript">
function submitAsPost(url) {
var postForm = document.createElement('form');
postForm.action = url;
postForm.method = 'post';
var bodyTag = document.getElementsByTagName('body')[0];
bodyTag.appendChild(postForm);
postForm.submit();
}
</script>
<a href="/my/url" onclick="submitAsPost(this.href); return false;">this is my post link</a>
如果您需要强制执行这在服务器端,您应检查HTTP方法,如果它不等于POST,发送一个HTTP 405响应代码(方法不允许)返回给浏览器并退出。 究竟如何实现,这将取决于你的编程语言/框架等。
Answer 2:
<form method="post">
如果你得到一个URL,你得到它,而不是张贴。 你当然不会引起浏览器发出通过其地址栏POST请求。
Answer 3:
我有一种感觉,从你的问题你只是希望发在浏览器的地址栏中post请求。
只需键入以下到地址栏对换“行动”到你喜欢的网址的价值。
data:text/html,<body onload="document.body.firstChild.submit()"><form method="post" action="http://stackoverflow.com">
这是无效的HTML,但是浏览器的(至少我的一切。在迄今为止测试过的那些)知道你的意思,我想保持尽可能短,我可以。
如果您想发表的价值观,只要你喜欢,每个为任何你喜欢的输入交换名称和值添加尽可能多的投入。
<input value="hugh.mahn@person.com" name="email">
<input value="passwordsavedinhistory" name="password">
要注意您发布将是可见的敏感信息是非常重要的:
- 你的历史
- 您的地址栏
- 浏览器的自动完成。
- 您从同一个标签可能访问其他网站
- 可能很多其他的东西太多
这是发送POST请求一个非常糟糕的方式,和所有其他的答案是更好,但它仍然很酷,你可以做到这一点。
Answer 4:
如果你想测试的东西,我建议使用提琴手手艺你的HTTP请求。 它可以让你指定动作动词(GET,POST,PUT,DELETE等)以及请求的内容。 如果你想从一个链接,但与POST而不是测试一个非常具体的要求,那么你就可以监视你的浏览器发出请求,只与修改POST操作重新发布。
Answer 5:
你不能强迫任何Web浏览器与POST标头中发送的URL。 但是,为了测试一个POST请求的URL,我可以建议的“海报” extention 铬和Mozilla浏览器
Answer 6:
上述submitAsPost()函数是一个很好的和优雅的解决方案,但它有一个问题 - 如果网址太长,一些浏览器(包括Firefox和IE)会返回一个错误。 因为我们很多人为了绕过这个限制,非常使用POST,我建议这样的解决方案:
// submit a URL using post
function submitAsPost(url) {
var bodyTag = document.getElementsByTagName('body')[0];
var postForm = document.createElement('form');
bodyTag.appendChild(postForm);
postForm.method = 'POST';
var serverAndParams = url.split("?");
postForm.action = serverAndParams[0];
var params = null;
try
{
var paramsAndHash = serverAndParams[1].split("#");
params = paramsAndHash[0];
var attrList = params.split("&");
for (var i = 0; i < attrList.length; i++)
{
try
{
var keyValue = attrList[i].split("=");
var el = document.createElement('input');
el.type="hidden";
el.name=keyValue[0];
var value = keyValue[1];
value = value.replace(/\+/g, ' ');
el.value=decodeURIComponent(value);
postForm.appendChild(el);
}
catch(error){}
}
}
catch(error){}
postForm.submit();
bodyTag.removeChild(postForm);
}
经测试与Firefox,Chrome和IE。
Answer 7:
您可以使用一个工具来测试。 我总是问你同样的问题。 有相当多的工具,可在网上。 下面是我使用的工具: http://www.hurl.it/
Answer 8:
我知道这个问题是旧的,但有人可能会发现这很有用。 您可以像使用卷曲(一个命令行工具http://curl.haxx.se/ )张贴到一个URL。
例:
curl -v --basic --user username:password --request POST "http://www.theurltopostto.com"
Answer 9:
这是一个小游戏后期,但我跑过这个发现HTML 5做了一些改动。 您可以使用输入标签添加formmethod(从而选择后)。 这为我工作。
见: http://www.w3schools.com/tags/att_input_formmethod.asp
Answer 10:
如果你有这样的问题:
request.open('POST',url,true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("data="+JSON.stringify(data));
在开发工具仍然瑟它是做一个GET那么这意味着你的网址是按以下格式:
http://example.com/folder
这意味着它应该是:
http://example.com/folder/
它是一种非常奇怪的错误也许不是你的问题相关,但我已经有它几次,它应该是在那里,因为它看起来严重危险。 使用Apache 2服务器时,在Ubuntu 14.04,没有太大的配置这发生在我身上。
Answer 11:
该实用程序“ 提琴手由Telerik的(免费洁具)”让你“撰写” HTTP请求和使用任何方法发送您选择(GET,POST,PUT,德尔等),它也会给你关于一些非常详细的信息请求和响应,可以是测试和调试过程中非常有用