跨域WebService请求
——Nginx+SOAP服务+Ajax客户端
2015年12月14日
1 目标:将WebService和客户端部署在不同的服务器,由客户端请求服务。
2 原理:Nginx将不同域的HTTP服务、网站放入统一的域中,规避跨域问题。
不同的服务器位置于不同的域。JavaScript安全性不允许POST的跨域请求(GET可以与服务器配合使用JSONP,有些勉强)。SOAP只能使用POST请求,所以无法直接跨域。一般的解决方案是使用服务器代理(由同域服务器跨域请求后返回),但导致过于复杂(参见:Java-webservice-CXF-SOAP服务.docx服务器代理)。
3 流程:发布WebService,发布Web网站,设置Nginx反向代理,修正WebService的同域URL。
3.1 发布WebService:Java-webservice-CXF-SOAP服务.docx流程
3.2 发布Web网站:新建Dynamic Web Application,添加index.html作为请求的客户端,添加相关的js文件。
客户端详情参见:基于SOAP的Web服务AJAX客户端.docx
//index.html
<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>Insert titlehere</title>
</head>
<scripttype="text/javascript"src="jquery-1.11.3.js"></script>
<body>
<button type="button" id="name">Web服务请求-SOAP</button>
<script type="text/javascript">
$(function() {
$("#name").click(function() {
var mySoapXml = '<soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" '+
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"'+
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'+
'