无法接收 POST 数据
Trouble receiving POST data
我有一个 aspx 页面,它可以简单地将接收到的任何内容打印到屏幕 POST。 key/value 对传递给 Label 控件的文本 属性 并显示为逗号分隔的字符串。
这是整个页面。
<%@ Page Language="C#" %>
<%@ Import Namespace ="System.IO" %>
<%@ Import Namespace ="System.Web" %>
<%@ Import Namespace ="System.Net" %>
<%@ Import Namespace ="System.Text" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string initialUrl = HttpContext.Current.Request.Url.AbsoluteUri;
string[] keys = Request.Form.AllKeys;
string keyString = "POST KEY-VALUE PAIRS RECEIVED: ";
for (int i = 0; i < keys.Length; i++)
{
keyString += keys[i] + "=" + HttpContext.Current.Request.Form[keys[i]] + ", ";
}
Label1.Text = keyString;
}
</script>
<!DOCTYPE html>
<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div>
<asp:label ID="Label1" runat="server" text="Label"></asp:label>
</div>
</body>
</html>
我正在使用 Google Postman 进行测试。当我使用 Visual Studio 2013 在调试模式下启动解决方案,然后使用 Google Postman 在本地主机上向它发送 post,它运行良好。 key/value 对出现在页面上。
但是当我将页面推送到我的共享主机(目前使用 GoDaddy)然后使用 Google Postman 进行测试时,它不起作用。页面加载但未显示 key/value 对。
http://www.parseci.com/ipn.aspx
在我的 GoDaddy 网站上运行时,页面似乎没有接收到 POST 数据,我不知道为什么。
GoDaddy 技术支持没有帮助。
我错过了什么?
更新:我将 ipn.aspx 文件复制到私有服务器并使用 Postman 和 Chrome Advanced Rest Client 进行了测试。当 POST 访问另一台机器上的侦听器页面时,两者都非常有效。
所以我在一台私人拥有的 public 网络服务器上成功了,但在 GoDaddy 作为主机时却没有成功。
我使用 Chrome Advanced Rest Client 时效果很好。您确定您正确使用 Postman 并将参数作为表单 body 参数输入,而不是查询参数或 headers?
<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width" /><title>
</title></head>
<body>
<div>
<span id="Label1">POST KEY-VALUE PAIRS RECEIVED: hello=nurse, </span>
</div>
</body>
</html>
注意:这似乎只是为了调试,但如果您保留此页面,您可能需要对收到的值进行编码或清理。否则,您的网站可能容易受到 XSS/CSRF Javascript injection-type 攻击。
编辑
也试过 Postman,这对我也有用。
解决方案是从接收 POST 的 url 中删除 'www'。我更改了 http://www.parseci.com/aspx.com to http://parseci.com/ipn.aspx,POST 到达并得到正确处理。
对于遇到相同问题并致力于功能性 Paypal IPN 侦听器页面的任何人,此解决方案也适用于 Paypal 的 IPN 模拟器。通过从给予模拟器的 url 中删除 'www',它第一次成功地 POST 到了我的监听器页面。
我有一个 aspx 页面,它可以简单地将接收到的任何内容打印到屏幕 POST。 key/value 对传递给 Label 控件的文本 属性 并显示为逗号分隔的字符串。
这是整个页面。
<%@ Page Language="C#" %>
<%@ Import Namespace ="System.IO" %>
<%@ Import Namespace ="System.Web" %>
<%@ Import Namespace ="System.Net" %>
<%@ Import Namespace ="System.Text" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string initialUrl = HttpContext.Current.Request.Url.AbsoluteUri;
string[] keys = Request.Form.AllKeys;
string keyString = "POST KEY-VALUE PAIRS RECEIVED: ";
for (int i = 0; i < keys.Length; i++)
{
keyString += keys[i] + "=" + HttpContext.Current.Request.Form[keys[i]] + ", ";
}
Label1.Text = keyString;
}
</script>
<!DOCTYPE html>
<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div>
<asp:label ID="Label1" runat="server" text="Label"></asp:label>
</div>
</body>
</html>
我正在使用 Google Postman 进行测试。当我使用 Visual Studio 2013 在调试模式下启动解决方案,然后使用 Google Postman 在本地主机上向它发送 post,它运行良好。 key/value 对出现在页面上。
但是当我将页面推送到我的共享主机(目前使用 GoDaddy)然后使用 Google Postman 进行测试时,它不起作用。页面加载但未显示 key/value 对。
http://www.parseci.com/ipn.aspx
在我的 GoDaddy 网站上运行时,页面似乎没有接收到 POST 数据,我不知道为什么。
GoDaddy 技术支持没有帮助。
我错过了什么?
更新:我将 ipn.aspx 文件复制到私有服务器并使用 Postman 和 Chrome Advanced Rest Client 进行了测试。当 POST 访问另一台机器上的侦听器页面时,两者都非常有效。
所以我在一台私人拥有的 public 网络服务器上成功了,但在 GoDaddy 作为主机时却没有成功。
我使用 Chrome Advanced Rest Client 时效果很好。您确定您正确使用 Postman 并将参数作为表单 body 参数输入,而不是查询参数或 headers?
<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width" /><title>
</title></head>
<body>
<div>
<span id="Label1">POST KEY-VALUE PAIRS RECEIVED: hello=nurse, </span>
</div>
</body>
</html>
注意:这似乎只是为了调试,但如果您保留此页面,您可能需要对收到的值进行编码或清理。否则,您的网站可能容易受到 XSS/CSRF Javascript injection-type 攻击。
编辑
也试过 Postman,这对我也有用。
解决方案是从接收 POST 的 url 中删除 'www'。我更改了 http://www.parseci.com/aspx.com to http://parseci.com/ipn.aspx,POST 到达并得到正确处理。
对于遇到相同问题并致力于功能性 Paypal IPN 侦听器页面的任何人,此解决方案也适用于 Paypal 的 IPN 模拟器。通过从给予模拟器的 url 中删除 'www',它第一次成功地 POST 到了我的监听器页面。