Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 857|回复: 0

解决AJAX跨域WCF的问题详解

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-29 21:32:16 | 显示全部楼层 |阅读模式

    解决AJAX跨域WCF的问题

    公司做的网站H5和后台分离的,只调用接口,必须解决H5跨域问题。

    网上百度没有很详细的, 带附件的帖子在自己这永远运行不起来很头疼,然后看到一篇帖子,说的还算清楚,但是不怎么详细。

    本次事列使用VS2015  Framework4.5.2 演示

    首先我们新建一个项目,常规的wcf项目

    新建完后是这样,点开Service1.svc

    在实现类上加入下面三句,如图

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

    在进入接口类,在要实现跨域的Action上加入下面这句

            [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]

     右键项目新建一个项,全局Global.asax

    每次访问都会经过的一个全局控制器

     

     双击进去,找到Application_BeginRequest方法添加如下

    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
    if (HttpContext.Current.Request.HttpMethod != "OPTIONS") return;
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
    HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
    HttpContext.Current.Response.End();

     

    最后最重要的一步,我们双击项目的web.config 看图吧  博客园显示图下可以右键另存为,查看大图

    两端配置
    <!--ajax跨域配置-->
    <endpointBehaviors>
    <behavior name="AjaxServiceAspNetAjaxBehavior">
    <enableWebScript />
    </behavior>
    </endpointBehaviors>
    <!--ajax跨域配置-->

    <!--ajax跨域配置-->

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
    <service name="RivValleyService.RValleyService">
    <endpoint address="" behaviorConfiguration="AjaxServiceAspNetAjaxBehavior"
    binding="webHttpBinding" bindingConfiguration="HttpJsonBinding" contract="RivValleyService.IRValleyService" />
    </service>
    </services>
    <bindings>

    <!--ajax跨域配置-->

     

     

    然后我双击Service1运行起来服务  运行成功如下

     

     前台调用,输入你的IP和端口  url一定要对,    方法名GetData后要接上  ?jsoncallback=?  否则将无法跨域

    $.ajax({
    url: "http://localhost:55147/RValleyService.svc/GetData?jsoncallback=?",
    type: "get",
    data:{value:111},
    dataType: "jsonp",
    success: function (data) {
    alert(data);
    }
    });
    });
    OK
    到这就结束了~
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 09:41 , Processed in 0.173581 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表