当前位置: 首页 > news >正文

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

跨域界定

常见跨域:

同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

分类:  ASP.NET, Web API
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/4864567.html ,如需转载请自行联系原作者

相关文章:

  • 用 zotero 管理文献和个人知识库
  • 新功能:在负载均衡SLB控制台上查看DDoS安全防护阈值
  • JavaScript 基础知识 - 入门篇(一)
  • xz文件如何解压
  • 超越NLP:构建聊天机器人面临的8个挑战
  • 运维学python之爬虫基础篇(二)urllib模块使用
  • 作为java初学者,适合看《java编程思想》这本书吗?
  • Is your JDeveloper Slow? - It shouldn't be!(转)
  • javascript面向对象系列第四篇——OOP中的常见概念
  • Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide
  • android下使用https协议发请求
  • 【转】Android开发之线程池使用总结
  • 小知识三、USerDefault我换个姿势来实现
  • 581 Shortest Unsorted Continuous Subarray
  • v4l2 Camera详细设置【转】
  • [数据结构]链表的实现在PHP中
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • CSS 三角实现
  • ESLint简单操作
  • gulp 教程
  • node学习系列之简单文件上传
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Zepto.js源码学习之二
  • 闭包--闭包作用之保存(一)
  • 成为一名优秀的Developer的书单
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聚簇索引和非聚簇索引
  • 老板让我十分钟上手nx-admin
  • 前端设计模式
  • 实现菜单下拉伸展折叠效果demo
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • # Panda3d 碰撞检测系统介绍
  • (13):Silverlight 2 数据与通信之WebRequest
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (MATLAB)第五章-矩阵运算
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (顺序)容器的好伴侣 --- 容器适配器
  • (学习日记)2024.01.19
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • .bat批处理(六):替换字符串中匹配的子串
  • .gitignore文件---让git自动忽略指定文件
  • .Net程序帮助文档制作
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET微信公众号开发-2.0创建自定义菜单
  • @vue/cli脚手架
  • [20161101]rman备份与数据文件变化7.txt
  • [AIGC] Java 和 Kotlin 的区别
  • [Android Studio 权威教程]断点调试和高级调试
  • [android] 手机卫士黑名单功能(ListView优化)
  • [Bugku]密码???[writeup]
  • [BZOJ4010]菜肴制作
  • [ffmpeg] av_opt_set 解析
  • [FUNC]判断窗口在哪一个屏幕上
  • [HackMyVM]靶场Crossbow
  • [HNOI2008]Cards