我很确定我记得读过 - 但是找不到链接了 - 关于这个:在一些ISP(包括美国至少一个大型ISP)上,有可能让用户的GET和POST请求出现来自不同的IP.
(请注意,这完全与编程有关,我将在下面举例说明)
我不是说你的IP地址在两个请求之间动态变化.
我在说这个:
IP 1: 123.45.67.89
IP 2: 101.22.33.44
Run Code Online (Sandbox Code Playgroud)
在相同的用户发出GET,那么一个帖子,然后再得到,然后再次发布和服务器看到这一点:
- GET from IP 1
- POST from IP 2
- GET from IP 1
- POST from IP 2
Run Code Online (Sandbox Code Playgroud)
因此,尽管它是同一个用户,但Web服务器会看到GET和POST的不同IP.
肯定看到HTTP是无状态协议,这是完全合法的吗?
我想找回关于某些ISP如何/为什么配置其网络以便可能发生这种情况的解释.
我问,因为有人要求我实施以下IP过滤器,我很确定它是从根本上破坏了代码(破坏了至少一个主要的美国ISP用户的破坏).
这是一个Java servlet过滤器,可以防止某些攻击.原因是:
" 对于任何会话过滤器检查请求中的IP地址是否与创建会话时使用的相同.因此,在这种情况下,会话ID不能被盗用于形成虚假会话."
http://www.servletsuite.com/servlets/protectsessionsflt.htm
但是我很确定这本身就是破坏的,因为有些ISP可能会看到来自不同IP的GET和POST.
我正在创建快速的Web应用程序,需要从PHP代码中发送php创建的消息.cURL显然是这项工作的工具,但我很难理解它以使其正常工作.
我正在处理的API的文档就在这里.特别是我想使用这里记录的简单的基于GET的短信通知.后一种资源表明GET API只是:
http://sms2.cdyne.com/sms.svc/SimpleSMSsend?PhoneNumber={PHONENUMBER}&Message={MESSAGE}&LicenseKey={LICENSEKEY}
Run Code Online (Sandbox Code Playgroud)
事实上,如果我在浏览器中输入以下URL,我会得到预期的结果:
http://sms2.cdyne.com/sms.svc/SimpleSMSsend?PhoneNumber=15362364325&Message=mymessage&LicenseKey=2134234882347139482314987123487
Run Code Online (Sandbox Code Playgroud)
我现在正试图在php中创建相同的效果.这是我的尝试:
<html>
<body>
<?php
$num = '13634859126';
$message = 'some swanky test message';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://sms2.cdyne.com/sms.svc/SimpleSMSsend?PhoneNumber=".urlencode($num)."&Message=".urlencode($message)."&LicenseKey=2345987342583745349872");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的其他PHP网页工作正常,所以我知道php和apache都设置正确.但当我将浏览器指向上面的页面时,我的手机上没有任何消息.任何人都可以告诉我我做错了什么吗?
注意:所有数字都是伪造的...正如您可能怀疑的那样.
我在使用长GET请求时遇到此错误:
严重:GRIZZLY0039:请求URI太大.java.nio.BufferOverflowException
我需要为Glassfish 3.1更改哪些配置?
我尝试更改这些参数但没有成功: - header-buffer-length-bytes(通过管理控制台) - request-body-buffer-size-bytes(在domain.xml中)
谢谢.
我正在将视图从[HttpPost]方法重定向到[HttpGet]方法.我已经开始工作,但想知道这是否是最好的方法.
这是我的代码:
[HttpPost]
public ActionResult SubmitStudent()
{
StudentViewModel model = TempData["model"] as StudentResponseViewModel;
TempData["id"] = model.Id;
TempData["name"] = model.Name;
return RedirectToAction("DisplayStudent");
}
[HttpGet]
public ActionResult DisplayStudent()
{
ViewData["id"] = TempData["id"];
ViewData["name"] = TempData["name"];
return View();
}
Run Code Online (Sandbox Code Playgroud)
视图:
<%@ Page
Language="C#"
Inherits="System.Web.Mvc.ViewPage"
%>
<html>
<head runat="server">
<title>DisplayStudent</title>
</head>
<body>
<div>
<%= ViewData["id"]%> <br />
<%= ViewData["name"]%>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 对此进行了一些挖掘,但是,没有运气找到信息
我正在尝试检查表单是否已提交,以及是否为GET或POST.基本上我用的是:
if($_SERVER['REQUEST_METHOD'] == 'GET')
Run Code Online (Sandbox Code Playgroud)
要么
if($_SERVER['REQUEST_METHOD'] == 'POST')
Run Code Online (Sandbox Code Playgroud)
但是,我发现如果我不提交任何表单,只是直接转到页面 - 一个简单的HTTP请求,REQUEST_METHOD就是GET.是什么赋予了?这是设计的吗?如果是,那么我不能使用前一个语句来检查表单是否已通过GET提交.似乎有点多余......
有更多知识的人请向我解释一下,我将不胜感激.谢谢.
Genaral练习是指当您登录或执行其他需要您的用户名和密码的操作时,您将其发送到帖子请求的正文中.另外,为了增加安全性,应该使用https.
在get请求中,这些参数作为URL的一部分发送.但是在https中,正如我所理解的那样,正文和标题都是加密的.
所以从理论上讲,无论你使用https post还是get for send,你的数据都是安全的......在一种情况下,攻击者必须在你的标题和你的身体其他部分进行描述.
所以我的问题是,如果这一切都是真的,那么帖子怎么更安全?
我看了一些论坛帖子,我无法找到问题的答案.我想从一个php文件得到一个响应.php文件正常运行.问题是Android App不会执行我的请求.以下是我的代码的两个示例以及我在textview中得到的结果:
public void changText(View view) {
TextView textv = (TextView)findViewById(R.id.textview1);
textv.setText("Text Has Been Changed");
BufferedReader in = null;
String data = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet();
URI website = new URI("http://alanhardin.comyr.com/matt24/matt28.php");
request.setURI(website);
HttpResponse response = httpclient.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
textv.append(" Connected ");
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
TextView显示:文本已更改
public void changText(View view) {
TextView textv = (TextView)findViewById(R.id.textview1);
textv.setText("Text Has Been Changed");
BufferedReader in = null; …Run Code Online (Sandbox Code Playgroud) 我希望从播放列表中获取所有statistics类似数据viewCount的视频,视频应按视频数量排序.到目前为止我已经管理了以下内容:
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUbW18JZRgko_mOGm5er8Yzg&key={YOUR_KEY_HERE}&maxResults=50
Run Code Online (Sandbox Code Playgroud)
在youtube api v2中,我们可以传递part=statistics以获取视图计数,但这不适用于v3播放列表.如何以上述格式获取上述视频数据.
我在一个简单的Spring Boot应用程序中有一个Thymeleaf模板.该模板在表中包含一个列表,如下所示:
<p>There are <span th:text="${#lists.size(persons)}"></span> people:</p>
<table th:if="${not #lists.isEmpty(persons)}" border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Address</th>
<th>Telephone</th>
<th>Email</th>
<th>Actions</th>
</tr>
<tr th:each="person : ${persons}">
<td th:text="${person.personId}"></td>
<td th:text="${person.name}"></td>
<td th:text="${person.address}"></td>
<td th:text="${person.telephone}"></td>
<td th:text="${person.email}"></td>
<td>
<a href="#" data-th-href="@{/edit(personId=${person.personId})}">Edit</a> |
<a href="#" data-th-href="@{/delete(personId=${person.personId})}">Delete</a>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我想根据表格中的最后一个单元格启用编辑和删除功能.但目前这两个请求都是针对HTTP GET的.这对于从服务器获取人员的详细信息以进行编辑的编辑很好,但是由于服务器上的数据更改,删除应该触发POST请求.
有没有人知道Thymeleaf是否允许每行一个表的POST请求?或者我是否必须每行编写一个简单的HTML表单?
GET表格目前是:
<td>
<a href="#" data-th-href="@{/edit(personId=${person.personId})}">Edit</a>
<!--a href="#" data-th-href="@{/delete(personId=${person.personId})}">Delete</a></td-->
<form method="get" th:action="@{/edit(personId=${person.personId})}">
<button type="submit" name="submit" value="value">Edit</button>
</form>
</td>
Run Code Online (Sandbox Code Playgroud)
我有一个链接和一个表格进行测试.
要调用的控制器方法是:
// Gets a Person.
@RequestMapping(value="/edit", method=RequestMethod.GET)
public String getEditPerson(@RequestParam("personId") String personId, Model model) { …Run Code Online (Sandbox Code Playgroud) 我通过Chrome发布请求:
[org]/api/data/v8.1/accounts?$select=name,accountid&$top=3
Run Code Online (Sandbox Code Playgroud)
我得到一个合理的答复:
{
"@odata.context":"[org]/api/data/v8.1/$metadata#accounts(name,accountid)","value":[
{
"@odata.etag":"W/\"769209\"","name":"Telco","accountid":"c6ed63e0-9664-e411-940d-00155d104b35"
},{
"@odata.etag":"W/\"752021\"","name":"Fourth Coffee","accountid":"d1eefc0a-3ebc-e611-80be-24be051ac8a1"
},{
"@odata.etag":"W/\"768036\"","name":"Fourth Coffee","accountid":"3cbb8d24-20bd-e611-80c0-24be051ac8a1"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,当尝试通过邮递员执行相同的GET时,我得到了401未经授权!
我尝试了完全没有标题以及基本身份验证:
Authorization:Basic Y2hybGFiXxxxxxxxxxxxxxcmQxMjM=
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我需要在CRM中进行一些更改以允许我从邮递员那里进行GET吗?
以下是Chrome使用的标题(DevTools提供了此标题):
http-get ×10
http-post ×5
php ×2
android ×1
asp.net-mvc ×1
c# ×1
curl ×1
glassfish ×1
google-api ×1
html ×1
http ×1
http-headers ×1
httpclient ×1
https ×1
ip ×1
postman ×1
query-string ×1
sms ×1
thymeleaf ×1
youtube ×1
youtube-api ×1