使用GET或POST方法有什么区别?哪一个更安全?他们每个人的(dis)优势是什么?
(类似问题)
我试图让工作的URL是以下风格的网址:http://somedomain.com/api/people/staff.33311(就像网站一样,LAST.FM允许在他们的RESTFul和WebPage网址中添加所有类型的标记例如," http://www.last.fm/artist/psy'aviah "是LAST.FM的有效网址.
以下方案有效: - http://somedomain.com/api/people/ - 返回所有人 - http://somedomain.com/api/people/staff33311 - 也可以,但不是我的意思在我希望网址接受"点"后,就像下面的示例 - http://somedomain.com/api/people/staff.33311 - 但这给了我一个
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Run Code Online (Sandbox Code Playgroud)
我已经设置了以下内容:
控制器"PeopleController"
public IEnumerable<Person> GetAllPeople()
{
return _people;
}
public IHttpActionResult GetPerson(string id)
{
var person = _people.FirstOrDefault(p => p.Id.ToLower().Equals(id.ToLower()));
if (person == null)
return NotFound();
return Ok(person);
}
Run Code Online (Sandbox Code Playgroud)WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
// …Run Code Online (Sandbox Code Playgroud)c# asp.net-mvc-routing asp.net-mvc-4 asp.net-web-api asp.net-web-api2
应用程序发送电子邮件以验证用户帐户或重置密码.我相信以下是应该的方式,我要求参考和实现.
如果应用程序必须在电子邮件中发送链接以验证用户的地址,根据我的观点,链接和应用程序对链接的处理应具有以下特征:
http://host/path?nonce.根据安全和幂等方法的HTTP RFC,这应该是正确的.
问题是这个过程涉及一个额外的页面或用户操作(第3项),这被很多人认为是多余的(如果不是无用的).我在向同行和客户介绍这种方法时遇到了问题,因此我要求更广泛的技术小组提供相关信息.我跳过POST步骤的唯一论点是可能从浏览器预加载链接.
谢谢你,
Kariem
细节幸免
我保持主要部分简短,但为了减少关于我故意遗漏的细节的太多讨论,我将添加一些假设:
笔记
使用OpenID等,普通的Web应用程序可以免于实施标准的用户帐户管理(密码,电子邮件......),但仍有一些客户需要" 他们自己的用户 "
奇怪的是,我还没有找到令人满意的问题,也没有回答.到目前为止我发现了什么:
可能重复:
您何时使用POST以及何时使用GET?
我从一本书中读到,POST用于向服务器发送数据,以某种方式导致服务器状态发生变化,例如在数据库中插入数据.GET用于数据检索,不会改变服务器上的任何内容.
我其实不太了解上面的内容.有人可以用一个例子说明它吗?该示例将显示如果我用$ _GET替换$ _POST,代码将无效.
我说我们没有GET可以做但我们不能没有POST吗?
对于我的Web应用程序(PHP/MYSQL),我显示了一个项目列表和每行上的链接以删除该项目.现在,链接是
<a href='item.php?id=3&action=delete'>Delete Item</a>
Run Code Online (Sandbox Code Playgroud)
如果我想使用POST而不是...我该怎么做(这是一个动态生成的列表)?我可以在不使用表单的情况下发送POST数据吗?
或者,对于每件物品,我都必须这样做:
<form action='item.php?id={$item_id}' method='POST'>
<input type='hidden' name='action' value='delete'>
<input type='submit' value='delete item'>
</form>
Run Code Online (Sandbox Code Playgroud)
并将提交按钮设置为原始链接?
我不熟悉php CURL或REST,它们有助于解决这个问题吗?
我知道HTTP get和post方法之间的区别(在这个问题的大细节中已经过期).
我的问题是为什么不总是使用post方法进行AJAX调用,这是安全的.是否有更快的请求?是否有理由更喜欢然后发帖?
对于没有ajax调用有一个原因 - 共享一个链接到相同的URL,但对于AJAX这个论点,这是不好的...
我应该使用下一个结构吗?
def PageObjects(request):
q = bla_bla_bla(bla_bla)
answer = request.POST['value']
<form action="PageObjects" method="get">
<select >
<option selected="selected" disabled>Objects on page:</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
</select>
<input type="submit" value="Select">
</form>
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?我需要写什么?
似乎坚持POST下去是因为它会产生干净的URL.GET似乎创建了长期令人困惑的URL.POST在安全性方面也更好.适用于保护表单中的密码.事实上,我听说许多开发人员只使用POST表单.我也听说很多开发人员从未真正使用GET过.
那么,GET如果POST有这两个优点,为什么以及在什么情况下会使用?
有什么好处也GET有过POST?
http ×4
post ×4
forms ×3
get ×3
html ×2
idempotent ×2
php ×2
asp.net ×1
c# ×1
definition ×1
django ×1
http-method ×1
jquery ×1
rest ×1
security ×1