Ajax Post Cross Domain 跨域请求 WCF RestFull

前段时间做手机WebAPP, 但开发人员习惯在浏览器上先调试基本功能, 但这里就出现了跨域请求问题

当然如果你自己写服务, 自己写WebAPP 都是localhost 就不会跨域, 而且发布到手机上也不会跨域

关键来了!!!!

1. 先要确保你的js写的是对的

 $.ajax({
        url: url3,
        data: JSON.stringify({userName:uid,userPass:pwd}),
                   contentType:"application/json; charset=utf-8",
                   type:"POST",
                   crossDomain: true,
                   dataType: 'json',
        success: function (data) {
        },
        error: function (xhr, textStatus, errMsg) {

        }
});

2. 确保你的服务支持OPTION 请求格式, 因为Jquery 跨域请求好像会请求两次, 第一次OPTION, 第二次POST , 所以你的Method上面应该写 * ,而不是POST

3. 你的web.config 的 system.webServer 节点需要增加跨域响应支持

<httpProtocol>

<customHeaders>

<addname="Access-Control-Allow-Origin"value="*"
/>

<addname="Access-Control-Allow-Headers"value="Content-Type"
/>

<addname="Access-Control-Allow-Methods"value="GET,
POST,PUT, DELETE, OPTIONS" />

</customHeaders>

</httpProtocol>

4.这个不知道是不是必须的, 需要在system.serviceModel 中的standardEndpoint增加

crossDomainScriptAccessEnabled="true"

本人花了6个小时才解决,希望其他人少走弯路

时间: 2024-10-05 04:25:57

Ajax Post Cross Domain 跨域请求 WCF RestFull的相关文章

Springboot如何优雅的解决ajax+自定义headers的跨域请求[转]

1.什么是跨域 由于浏览器同源策略(同源策略,它是由Netscape提出的一个著名的安全策略.现在所有支持JavaScript 的浏览器都会使用这个策略.所谓同源是指,域名,协议,端口相同.),凡是发送请求url的协议.域名.端口三者之间任意一与当前页面地址不同即为跨域. 具体可以查看下表: 2.springboot如何解决跨域问题 1.普通跨域请求解决方案: ①请求接口添加注解@CrossOrigin(origins = "http://127.0.0.1:8020", maxAge

jQuery中Ajax+Spring MVC实现跨域请求

项目开发中,某个可独立.也可集成的子业务模块须要向外开放相关API接口,先说下项目本身使用了jersery来实现RESTful webservice以名词形式公布API.有意思的是在实际的操作中同事却通过Ajax跨域请求的方式去调用该API,先不说成功与否,这样的方式本就是"滑稽"的.和他一起探讨了此种做法的不合理性,之后选择jersey client的方式进行远程调用.只是他在跨域请求中遇到了问题,自己闲暇时间予以解决,这才是此篇文章的由来. jQuery对跨域请求有两种解决方式各自

Ajax+Spring MVC实现跨域请求(JSONP)JSONP 跨域

JSONP原理及实现 接下来,来实际模拟一个跨域请求的解决方案.后端为Spring MVC架构的,前端则通过Ajax进行跨域访问. 1.首先客户端需要注册一个callback(服务端通过该callback(jsonp)可以得到js函数名(jsonpCallback)),然后以JavaScript语 法的方式,生成一个function 2.接下来,将JSON数据直接以入参的方式,放置到function中,这样就生成了一段js语法文档,返回给客户端. 3.最后客户端浏览器动态的解析script标签,

Ajax+Spring MVC实现跨域请求(JSONP)

JSONP解释 在解释JSONP之前,我们需要了解下"同源策略"这个概念,这对理解跨域有帮助.基于安全的原因,浏览器是存在同源策略机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载额文档的属性.有点绕,说的简单点就是浏览器限制脚本只能和同协议.同域名.同端口的脚本进行交互. JSONP就是为了解决这一问题的,JSONP是英文JSON with Padding的缩写,是一个非官方的协议.他允许服务端生成script tags返回值客户端,通过javascript call

$.ajax和$.getJson解决跨域请求

写js时总是会遇到跨域请求的问题,现在了解了两种方法,记录之: 1)使用$.ajax,但是返回数据类型要设置为jsonp,示例: $.ajax({ type: 'get', contentType: "application/json; charset=utf-8", url: "http://localhost:8080/aqi/getCityList.php", dataType: 'jsonp', headers: { Accept: "applic

Ajax+Spring MVC实现跨域请求(JSONP)(转)

背景: AJAX向后台(springmvc)发送请求,报错:已阻止交叉源请求:同源策略不允许读取 http://127.0.0.1:8080/DevInfoWeb/getJsonp 上的远程资源.可 以将资源移动到相同的域名上或者启用 CORS 来解决这个问题. 百度一下,发现是遇到了跨域请求请求问题.搜集资料如下 JSONP解释 在解释JSONP之前,我们需要了解下"同源策略"这个概念,这对理解跨域有帮助.基于安全的原因,浏览器是存在同源策略机制的,同源策略阻止从一个源加载的文档或脚

Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

    webservice 代码 1 /// <summary> 2 /// MESService 的摘要说明 3 /// </summary> 4 [WebService(Namespace = "http://tempuri.org/")] 5 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 6 //[System.ComponentModel.ToolboxItem(false)

jQuery Ajax 简单的实现跨域请求

html 代码清单: [html] view plain copy <script type="text/javascript" src="http://www.youxiaju.com/js/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function(){ $.ajax( { type:'get', url : 'http

ajax跨域请求问题

ajax是不允许跨域请求的,今天在使用bootstap-table的时候,data-url使用的地址是绝对地址,而非相对地址,因此在载入数据的时候就出错了. 启动的时候使用是 http://127.0.0.1 ,在请求时候使用地址 http://localhost 也是不允许的. 因此,以后使用ajax的时候使用相对地址,而非绝对地址. 找这个问题的时候遇到颇多困难,如果一开始调用ajax就失败,也许我很快能够意识到是ajax的跨域问题.但是由于使用别人写好的控件,内部是封装的,所以不能很快定位