如何将JavaScript自动POST的状态代码获取到另一个域
How to get the status code of a JavaScript auto-POST to another domain
我们正在构建一个SAML解决方案,在某个阶段,我们提供一个预先填充了各种参数的html表单,设置为POST到独立于我们的web服务上的端点。然后通过JavaScript自动提交该表单。(即这是SAML POST绑定)
对于调试来说,如果我们能发现这个自动POST是否成功,那将是非常有用的。有人知道我们该怎么做吗?只要能够获得HTTP状态代码,或者能够发现请求是否超时,就会非常有帮助。
当前进展:
据我所知,没有办法直接检查表单提交的实际结果,我认为你也无法从onunload事件中获得下一个请求的状态。
我们准备对其进行重组,转而使用AJAX进行POST,但我认为我们无法在其他端点的域中实现这一点。我还想知道我们是否可以将另一个页面加载到一个框架中,并以某种方式获得一些信息,但我知道它也有自己的一组跨域限制。
最后,我们可以尝试先在服务器端进行POST并对此进行分析,但我们访问的服务器很可能位于仅对客户端本地可用的网络上,因此这可能是不可行的,此外还有重放等方面的各种问题。
任何想法或解决方案都将非常有用!
对于测试,浏览器的内置调试如何?Chrome可以让你看到所有的网络请求,包括标题(在这里描述),Firebug也有类似的功能。
如果你说的不仅仅是在测试期间知道结果,而是从用户那里获得POST成功状态,那么我认为跨域限制太强了,除非:
- 第三方服务提供了某种可以通过JSONP访问的"成功了吗"URL
- 第三方服务被配置为允许使用CORS(MDN-docs)进行跨站点AJAX
以下是AJAX请求的基本示例:
var xmlhttp;
if (window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
请注意带有xmlhttp.status == 200
的行。您应该能够检查这个变量以查看AJAX调用返回的状态。所以你可以这样做:
var xmlhttp;
if (window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
{
console.log("STATUS = "+ xmlhttp.status);
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
这就是你要找的吗?
相关文章:
- 如何从JavaScript到C#代码中获取特定值
- 获取PHP代码中日期选择器的值
- 无法将代码后面的值获取到JavaScript
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- 通过从文本区域获取代码,在画布中运行处理代码
- 如何获取保存在变量中的HTML代码的任何属性的值
- jQuery代码,用于在检查行时获取其他列的数据
- 分析JS代码以在客户端获取cookie
- 如何从c#代码中获取asp控件id
- 如何将JavaScript自动POST的状态代码获取到另一个域
- "“用户友好”;vimeo嵌入,从url获取嵌入代码
- 如何在标记之间获取代码
- 从客户端获取代码隐藏中的输入文本框值
- 我将如何从外部 URL 获取代码并在 NodeJS 中执行它
- 未获取代码覆盖率信息
- 获取代码隐藏(C#)中的内部html值
- 如何在c#中获取代码背后的javascript值
- 如何从代码检查器中获取代码差异
- JQuery Datepicker获取代码绑定中的selectedmonth change事件
- 从页面稍后获取代码