Cordys HTML JS调用 Webservice 解决跨域问题
2015-05-25 11:17
836 查看
(1):下载一个 Apache2.2 , 打开httpd.conf ,添加如下代码:
Listen 8000 #找到 Apache 默认的端口 ,80 ,修改 80端口 为:8000
添加 WebService请求服务器的反向代理:
Listen 8000 #找到 Apache 默认的端口 ,80 ,修改 80端口 为:8000
添加 WebService请求服务器的反向代理:
ProxyPass /home http://192.168.100.122/home ProxyPassReverse /home http://192.168.100.122/home ProxyPass /cordys http://192.168.100.122/cordys ProxyPassReverse /cordys http://192.168.100.122/cordys[/code]
(2):Cordys 模拟登入
利用Fiddle 抓取模拟登入XML<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:Username>201613</wsse:Username> <wsse:Password>201613</wsse:Password> </wsse:UsernameToken> </wsse:Security> <i18n:international xmlns:i18n="http://www.w3.org/2005/09/ws-i18n"> <locale xmlns="http://www.w3.org/2005/09/ws-i18n">en-US</locale> </i18n:international> </SOAP:Header> <SOAP:Body> <samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" IssueInstant="2015-05-25T03:05:47Z" RequestID="a8636cc371-981e-a06a-8eed-39d1d59b493"> <samlp:AuthenticationQuery> <saml:Subject xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">201613</saml:NameIdentifier> </saml:Subject> </samlp:AuthenticationQuery> </samlp:Request> </SOAP:Body> </SOAP:Envelope>
获取Response 数据:var Artifact=$(RXML).find("samlp\\:AssertionArtifact").text();<samlp:AssertionArtifact xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> MDGr8XizIp4NPSn7RARgH+ZGBjT8LdGnJA7+QOybeSOXxMdpk/IuvAsj </samlp:AssertionArtifact>
额外知识补充:
How
to use SAML artifacts
模拟登入 验证 成功后:对 AssertionArtifact 进行 encodeURIComponent 然后进行 抓取数据
完整 代码如下:<!DOCTYPE html> <html> <head lang="zh-CN"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <title>DEMO—演示SOAP调用</title> <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css"> </head> <body> <div class="container"> <form class="form-horizontal" role="form"> <div class="page-header text-left"><h2>输入账户号</h2></div> <div class="form-group"> <div class="row"> <label class="col-md-1" for="p_userdn1">租户账户号</label> <div class="col-md-6"><input type="text" id="tenantcount" placeholder="请输入租户账户号" /></div> </div> </div> <div class="form-group"> <div class="row"> <button type="button" class="btn btn-primary btn-lg" id="btnLoadUserXML" >用户XML信息</button> <button type="button" class="btn btn-primary btn-lg" id="btnLoadUser" >用户名称</button> <button type="button" class="btn btn-primary btn-lg" id="btnLoadUser" onclick="">删除Cookie</button> </div> <div class="row"> <textarea class="form-control" rows="6" id="userXML"></textarea> </div> </div> </form> </div> <script src="js/jquery-1.11.2.min.js" type="text/javascript"></script> <script src="js/bootstrap.min.js" type="text/javascript"></script> <script src="js/jquery.cookie.js" type="text/javascript"></script> <script type="text/javascript"> var Artifact=null; $(function(){ var defaultinst_SAMLart=$.cookie("defaultinst_SAMLart"); //alert(defaultinst_SAMLart+"encodeURIComponent:" +encodeURIComponent(defaultinst_SAMLart)); if(defaultinst_SAMLart==""||defaultinst_SAMLart==undefined){ VLogin(); } $("#btnLoadUserXML").click(loadUserXML); }); function VLogin(){ var gwUrl="http://192.168.100.108:8000/home/comac/com.eibus.web.soap.Gateway.wcp"; var lgXML="<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\">" +"<SOAP:Header>" +"<wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">" +"<wsse:UsernameToken xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">" +"<wsse:Username>201613</wsse:Username>" +"<wsse:Password>201613</wsse:Password>" +"</wsse:UsernameToken>" +"</wsse:Security>" +"<i18n:international xmlns:i18n=\"http://www.w3.org/2005/09/ws-i18n\">" +"<locale xmlns=\"http://www.w3.org/2005/09/ws-i18n\">en-US</locale>" +"</i18n:international>" +"</SOAP:Header>" +"<SOAP:Body>" +"<samlp:Request xmlns:samlp=\"urn:oasis:names:tc:SAML:1.0:protocol\" MajorVersion=\"1\" MinorVersion=\"1\" IssueInstant=\"2015-05-21T05:57:42Z\" RequestID=\"a24de77846-7113-0716-468d-54a740939ce\">" +"<samlp:AuthenticationQuery>" +"<saml:Subject xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\">" +"<saml:NameIdentifier Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\">201613</saml:NameIdentifier>" +"</saml:Subject>" +"</samlp:AuthenticationQuery>" +"</samlp:Request>" +"</SOAP:Body>" +"</SOAP:Envelope>"; $.ajax( {url:gwUrl, type:"POST", dataType:"xml", data: lgXML, contentType:"text/xml; charset=\"utf-8\"", complete:lgResult } ); return false; } function lgResult(result, status){ var RXML=result.responseText; Artifact=$(RXML).find("samlp\\:AssertionArtifact").text(); } function loadUserXML(){ var gwUrl="http://192.168.100.108:8000/home/comac/com.eibus.web.soap.Gateway.wcp"; var dUrl = "http://192.168.100.108:8000/home/comac/com.eibus.web.soap.Gateway.wcp" dUrl=dUrl+"?SAMLart="+encodeURIComponent(Artifact); var dXML ="<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\">" +"<SOAP:Body>" +"<GetDepartmentByParentID xmlns=\"http://schemas.cordys.com/CommonPackage\" preserveSpace=\"no\" qAccess=\"0\" qValues=\"\">" +"<ParentID>29</ParentID>" +"</GetDepartmentByParentID>" +"</SOAP:Body>" +"</SOAP:Envelope>"; $.ajax( {url:dUrl, type:"POST", dataType:"xml", data: dXML, contentType:"text/xml; charset=\"utf-8\"", complete:getResult } ); return false; } function getResult(result, status){ $("#userXML").val(result.responseText); } $(function(){ $("#btnLoadUser").click(getUserName); }); function getUserName(){ var v_userXML = $("#userXML").val(); $("#userXML").val($(v_userXML).find("department>DepartName").text()); } </script> </body> </html>
相关文章推荐
- Silverlight 2 Beta2调用WebService跨域问题解决方案
- 自定义WebSerivce作为代理解决SilverLight跨域调用WebService问题
- Flex跨域调用Webservice 问题 解决 Channel.Security.Error
- silverlight调用webservice跨域导致问题的解决方法
- 利用nginx解决js跨域调用问题
- JQuery ajax调用webservice跨域问题解决办法
- (转)jquery跨域调用webService,以及解决跨域情况下只能返回XMl格式数据的问题
- JAVA调用https, JS跨域请求,客户端解决JS跨域问题, SOP
- Sliverlight调用WebService跨域问题解决
- HTML JS 调用Cordys WebService
- 服务器端解决JS跨域调用问题
- 解决js跨域访问问题JSONP,不支持同步调用
- web api 初体验 解决js调用跨域问题
- web api 初体验 解决js调用跨域问题
- JS AJAX 调用tyk转发报跨域问题(已解决)
- 服务器端解决JS跨域调用问题
- vue.js vue-cli 中解决 axios 跨域调用的问题
- 解决调用Iframe引入跨域访问页js方法问题
- 解决js,webservice 跨域问题的,服务器端添加代码
- web api 初体验 解决js调用跨域问题