XMLHttpRequest 请求java部署的webservice 跨域问题

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
  <head>
    <title>企业列表</title>
  </head>

  <body  >
  </body>
</html>

<script  type="text/javascript">
var webservice = function() {
    var nameSpace = "http://ws.search.serviceinterface.ths.com";
    var url = "http://192.168.0.152:8082/service/ws/jsonWebService";
    //创建 xmlhttp
    var xmlhttp;
    var callback;
    var createXmlHttp = function() {  
        if (window.ActiveXObject) { 
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
        }  
        else if (window.XMLHttpRequst) { 
           xmlhttp = new XMLHttpRequest();  
        }
    };
    //回调处理
    var setChange = function() {  
        if (xmlhttp.readyState == 4) {
            alert(xmlhttp.status);
            alert(xmlhttp.responseText);
            if (xmlhttp.status == 200) { 
              alert(xmlhttp.responseText);
                returnData = {};
                if (callback) {
                    if (xmlhttp.responseText != "") {
                        var json = eval("(" + xmlhttp.responseText + ")");
                        returnData = json;
                    }
                    callback(returnData);
                }
            }  
        }  
    };
    //获取字符串长度
    var getlen = function(str) {
        var bytesCount = 0;
        for (var i = 0; i < str.length; i++) {
            var c = str.charAt(i);
            if (/^[u0000-u00ff]$/.test(c)) {
                bytesCount += 1;
            } else {
                bytesCount += 2;
            }
        }
        return bytesCount;
    }; 
    //获取数据串
    var getData = function(method, str) {
        var data;
        data = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
        data += "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";
        data += "<soap:Body>";
        data += "<"+ method + " xmlns=\"" + nameSpace + "\">";
        data += "<in0>402880184877f94f0148862c84530341</in0>";
        data += "<in1>8</in1>";
        data += "<in2>"+ str + "</in2>";
        data += "</" + method + ">";
        data += "</soap:Body>";
        data += "</soap:Envelope>";
        return data;
    };
    var setRequest = function(method, data) {
        createXmlHttp();
        xmlhttp.onreadystatechange = setChange;
        xmlhttp.open("POST", url, true);
        xmlhttp.setRequestHeader("Content-Type", "json; charset=utf-8");
        xmlhttp.setRequestHeader("Content-Length", getlen(data));
        xmlhttp.setRequestHeader("SOAPAction", nameSpace + method);
        xmlhttp.send(data);
    }
    return {
        postWs: function(method, data, call) {
            var data = getData(method, data);
            callback = call;
            setRequest(method, data);
        }
    }
} ();

function loadData(){
    var enterName=GetQueryString("enterName");
    var jsonStr = "{\"pager\":{\"page\":\"\",\"pageSize\":\"10\"},\"params\":[{\"FieldName\":\"STANDENTERID\",\"Value\":\"\",\"Operator\":\"=\"},{\"FieldName\":\"ENTERID\",\"Value\":\"\",\"Operator\":\"=\"},{\"FieldName\":\"ENTERCODE\",\"Value\":\"\",\"Operator\":\"=\"},{\"FieldName\":\"ENTERNAME\",\"Value\":\"%"+enterName+"%\",\"Operator\":\"like\"},{\"FieldName\":\"CORPCODE\",\"Value\":\"\",\"Operator\":\"=\"}]}";
    webservice.postWs("RunJsonResult", jsonStr,
    function(data) {
        alert(data);
    });
}

function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");
    var r = window.location.search.substr(1).match(reg);
    if (r!=null) return (r[2]); return null;
 }

 window.load=loadData();

</script>

此时存在跨域问题,回报一个无权限的访问

第一个解决方法

其它方法就是添加web引用

时间: 2024-10-10 23:27:30

XMLHttpRequest 请求java部署的webservice 跨域问题的相关文章

关于JavaScript 访问基于SOAP的WebService跨域问题

关于JavaScript 访问基于SOAP的WebService跨域问题 最近,搭建好了一个基于SOAP的WebService服务器.结果,使用JavaScript访问WebService遇到了跨域的问题! 首先,声明代码中的WebService不是本人搭建,由于本人的服务器地址不方便公开. 这个是测试HTML <html> <meta charset="utf-8" /> <head> <title>通过ajax调用WebService

JS-JQuery(JSONP)调用WebService跨域若干技术点

1.JSONP:JSON With Padding,让网页从别的网域获取信息,也就是跨域获取信息,可以当做是一种"工具",大多数架构Jquery.EXTjs等都支持. 由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外.利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就

JAVA用CORS实现跨域请求

之前在开发实验室的一个云服务,主要后端是使用java基于jfinal框架.我们在开发中遇到了一个小小的问题,由于我们开发通常是将前后端分离利用AJAX进行交互的.但是AJAX是不允许跨域的哦,那么问题来了,我们该如何进行跨域AJAX呢? 一.什么是AJAX? Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用 

WebService跨域配置、Ajax跨域请求、附开发过程源码

项目开发过程中需要和其他公司的数据对接,当时我们公司提供的是WebService,本地测试,都是好的,Ajax跨域请求,就报错,配置WebService过程中,花了不少功夫,入不少坑,不过最终问题还是解决啦~~~特意将完整开发步骤记录下来,以备下次勿犯,废话不多说,直接上源码! 第一步,右键,新建项,添加"web服务" 第二步:在webservice项目的web.config中添加如下配置,缺一不可: 1 <system.web> 2 <webServices>

Ajax请求WebService跨域问题

1.背景 用Jquery中Ajax方式在asp.net开发环境中WebService接口的调用 2.出现的问题 原因分析:浏览器同源策略的影响(即JavaScript或Cookie只能访问同域下的内容); 3.解决方案: (1) JSONP:只支持GET方式 (2) CROS:跨域资源共享 以下为CROS解决方案: a.在WebService接口加上响应头信息: b.在web.config文件中加上相关配置节信息: 运用a或者b的解决方案后,浏览器头信息中变动如下: 最终问题得以较好的解决,但对

Java - Spring MVC 实现跨域资源 CORS 请求

拦截器设置响应头 这种方式原理就是利用拦截器在方法执行前,我们增加请求的响应头,用来支持跨域请求.这种方案是可行的,大部分都是采用这种方案.我当时也是打算采用这种方案,直到我发现原来 Spring 框架已经支持了 CORS 之后,就果断采用了 Spring 框架的内置的方案,其实原理也是一样的. 直接配置即可: <!-- API 接口跨域配置 --> <mvc:cors> <mvc:mapping path="/api/**" allowed-origin

jQuery和java后台的jsonp跨域问题

Jsonp原理: ajax本身是不可以跨域的,通过产生一个script标签来实现跨域.因为script标签的src属性是没有跨域的限制的.其实设置了dataType: 'jsonp'后,$.ajax方法就和ajax XmlHttpRequest没什么关系了,取而代之的则是JSONP协议.JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问. JSONP是一种脚本注入(Script Injection)行

用Nginx代理请求,处理前后端跨域

自从前端spa框架出现后,都是前后端分离开发了.我们在开发的时候难免会遇到跨域的问题.跨域这种问题解决的方法基本都是在服务端实现的.以java为例,我知道的有3种方法处理跨域: 1.使用 @CrossOrigin 注解对每一个接口进行跨域处理,缺点是比较麻烦 @CrossOrigin(origins ="*") @RequestMapping(value = "/test", method = RequestMethod.GET) public String tes

解决jquery调用NET webservice跨域的问题

声明,解决方案由网上收集而来,个人整理.有别人的,也有我的. 一.webserive端 1.web.config 需要在web.config的configuration节点中加入如下的黑体部分内容. <system.web>    <webServices>      <protocols>        <add name="HttpGet" />        <add name="HttpPost" /&g