Javascript 使用dojo post请求登录外部服务器
我正在尝试用dojo编写一个登录函数。在我的情况下,我需要一个到外部(!!)服务器的post请求在这种情况下: 登录定义如下: 登录 登录是一种特殊操作,不处理任何数据,而是验证用户。将发出POST请求,其中包含一个json对象,其键为“email”和“password”。返回值为true或false。返回一个特殊的Cookie以供进一步识别 有效的API调用 URL:/api/登录 方法:邮寄 字段: 电子邮件 密码 说明:以PLIST格式返回登录用户的所有数据。如果登录失败,将以PLIST格式返回false 我试图通过io.iframe.send调用来解决这个问题,但我得到了以下错误:错误:访问属性“getElementsByTagName”的权限被拒绝 然而,我甚至不确定io.iframe是否是解决问题的正确方法 也许你能帮助我 非常感谢 PS:我当前的代码如下所示:Javascript 使用dojo post请求登录外部服务器,javascript,login,dojo,Javascript,Login,Dojo,我正在尝试用dojo编写一个登录函数。在我的情况下,我需要一个到外部(!!)服务器的post请求在这种情况下: 登录定义如下: 登录 登录是一种特殊操作,不处理任何数据,而是验证用户。将发出POST请求,其中包含一个json对象,其键为“email”和“password”。返回值为true或false。返回一个特殊的Cookie以供进一步识别 有效的API调用 URL:/api/登录 方法:邮寄 字段: 电子邮件 密码 说明:以PLIST格式返回登录用户的所有数据。如果登录失败,将以PLIST格
function login(){
require(["dojo/io/iframe", "dojo/dom"], function(iframe, dom){
var email = dom.byId("logEmail").value;
var password = dom.byId("logPassword").value;
function JSONreq(){
var jsonpArgs = {
method: 'POST',
handleAs:"json",
content:{
email: email,
password: password
},
url: "http://---someServerThatIDontWantToName---/api2/login",
load: function (response, ioargs){
//console.log(response)
alert('succes');
},
error: function(response, ioargs){
alert("error");
}
};
iframe.send(jsonpArgs);
}
dojo.ready(JSONreq);
});
};
移动发展有什么不同吗?跨服务器post请求应该可以在移动设备上进行
因此:出于这个原因,我可以使用io.iframe.send吗?您可以使用目标iframe向另一个域发送POST请求,但不能从该iframe读取任何属性或DOM节点
有
XHR2
,但并非所有浏览器都支持它,服务器应该返回特定的头。我不确定你是否可以通过XHR2发送POST。简而言之,你不能在任何时候通过浏览器客户端在X域上使用POST请求。原因是,DOM在另一个命名空间上受到保护,并且通过io发生的事情是
- 如果不存在,则按如下方式创建:
dojo.create(“输入”,{type:“隐藏”,name:name,value:value},fn)代码>
- 否则,请在form.element-of-name上设置值
} curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch,CURLOPT_USERAGENT,“transport.php(curl)”) //发送、捕获返回的响应并关闭 $response=curl\u exec($ch); $info=curl\u getinfo($ch); 卷曲关闭($ch) //回复对客户端XHR的响应 标题(“内容类型:”.$info[“内容类型”]); 回音$应答
您可以使用jsonp或调用您的域,并通过URL发送参数。不幸的是,这些帖子对我帮助不大……当我告诉您这将是一个移动应用程序时,也许它对您有所帮助。我使用的是dojo和phonegap。我的get请求工作正常,但登录文档显示,我需要一个post请求才能最终登录。
if (strpos(substr($action, 0, strlen($domain)), $domain) !== false) {
header("HTTP/1.0 403 Forbidden");
die("Domain name "".$action."" not allowed. Access denied.");
flush();
}
foreach ($_REQUEST as $key => $value) {
if ($key != "url" && $key != "method") // append anything but url and method
$fields .= $key . "=" . rawurlencode($value) . "&";
}