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入门到精通教程
查看: 448|回复: 0

web api 初体验 解决js调用跨域问题

[复制链接]
  • TA的每日心情
    奋斗
    前天 21:54
  • 签到天数: 754 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    707080
    发表于 2021-4-19 14:12:39 | 显示全部楼层 |阅读模式

    跨域界定

    常见跨域:

    同IP不同端口: http:IP:8001/api/user     http:IP:8002/api/user 

    不同IP不同端口: http://172.28.20.100:8001/api/user    http://172.128.20.100:8002/api/user 

     

    基本介绍

     web api出现的时间也不短了,一直没机会运用,很多公司还是用的wcf 和webservice.目前常用的web api场景是一个接口多平台调用,例如给安卓调用 给ios调用 给平板调用 主要为移动互联网提供服务,web api虽然可以脱离iis自寄宿 但目前大多还是托管在IIS上的。

    调用方式

      1. 后台调用

      

          var httpClient = new HttpClient();
                var responseJson = httpClient.GetAsync("http://172.28.20.106:8002/api/products/3")
                   .Result.Content.ReadAsStringAsync().Result;       
                   Console.WriteLine(responseJson);
                //就这么简单的几行代码可以获得产品ID为3的对象 这是Get请求

    目前使用最多的就是在手机端后台调用的方式来进行。但是在web网站端我们并不满足于后台调用 我们习惯前台用ajax调用

    2.前台调用

     $.ajax({
                type: "GET",
                url: "http://172.28.20.106:8002/api/products/3",
                dataType: "xml",
                contentType: 'application/xml;charset=gb2312;'
            }).success(function (res) {
                console.log(res);
            }).error(function (xhr, status) {
                console.log(xhr);
            });

    这样写绝对报错,会提示跨域调用错误

    解决办法好几个 我采用cors的方式

    步骤1:在api服务端添加引用 使用Nuget包联机安装

    引用它是要用到 System.web.Http.Cors.dll这个文件

      控制跨域的访问权限有3种

     1.限定方法

     2.限定类(controller)

     3.全局 

     

    我们直接使用简单粗暴的全局访问

      在app_start文件夹下面有个WebApiconfig.cs文件,在里面加上2句代码就 可以了

    var cors = new EnableCorsAttribute("*", "*", "*");//第一个参数是指定的域(www.baidu.com 多个域可以以","分隔)
    config.EnableCors(cors);

    图片如下

    简单的几个步骤就解决了跨域问题,之前难倒了我2天,就为了使用ajax调用webapi

    学习资料

    关于webapi的使用步骤 官方有详细的教程 还有必应直接翻译成中文,虽然翻译的语句不通,比小学作文还烂,但比看英文好太多,谁叫咱英文烂呢 

    官方地址

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-26 13:18 , Processed in 0.063636 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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