客户端检测HTTP请求方法

时间:2008-09-23 14:09:31

标签: javascript http-headers

是否可以从JavaScript检测页面的HTTP请求方法(例如GET或POST)?如果是这样,怎么样?

7 个答案:

答案 0 :(得分:30)

总之 - 没有

答案 1 :(得分:18)

我不相信。如果您需要此信息,我建议在服务器上生成一个<meta>元素,您可以使用JavaScript进行检查。

例如,使用PHP:

<meta id="request-method" name="request-method" content="<?php echo htmlentities($_SERVER['REQUEST_METHOD']); ?>">
<script type="text/javascript">
    alert(document.getElementById("request-method").content);
</script>

答案 2 :(得分:7)

如果您需要此功能,请让服务器检测使用的方法,然后修改DOM中的某些内容,然后再将其读出。

答案 3 :(得分:6)

您可以查看该页面的推荐人:

document.referrer == document.URL

如果它是同一页面,则很可能是用户提交了表单。

当然这需要

  • 您没有从页面链接到自身(无论如何都是可访问性所必需的)
  • 表单已提交到
  • 上的同一页面
  • 用户未禁用引荐来源

答案 4 :(得分:1)

如果您使用xmlhttp调用并使用getResponseHeader

,您无法为正常的帖子/ get获取此信息

答案 5 :(得分:0)

没有

JS 是一种客户端编程语言,这意味着一切都是客户端。但是,您可以使用 PHP 或任何服务器端语言来执行此操作。

如果您要使用 php,这是一个示例:

<?php 
  $foo = $_POST["fooRequest"]; # The actual response.

  # do something with the foo variable like:
  # echo "Response got: " + $foo;
?>

然后添加一些 HTML:

 <form action="test.php" method="post">
 <input type="text" class="foo" name="fooRequest" placeholder="Testing requests" />
 <button type="submit" name="submitButton">Send</button>
 </form>

上面的代码发送了一个 POST 请求,然后在 PHP 中我们得到了 'fooRequest'。但是,如果您要使用 JS,那是不可能的就像我说的客户端编程语言

我知道已经有答案了,但我只是想再解释一下。

答案 6 :(得分:-2)

尝试一下

function getURIQueryString(){
    var params = {};
    var qstring = window.location.toString().substring(window.location.toString().indexOf("?") + 1);
    var regex = /([^&=]+)=([^&=]+)/g;
    var m;
    while (m = regex.exec(qstring)){
        params[decodeURIComponent(m[1])] = decodeURIComponent(m[2])       
    }
    return params
}

通常有效。例如,获取名为test的get参数。用这个

getURIQueryString().test

但是无法获得发帖请求