随笔 - 53  文章 - 0  评论 - 3  阅读 - 48728

Ajax跨域访问等问题

前端时间公司接口整顿,所有接口放一起了,然后我就写了一大堆API接口.......

今天用上了,公用人员库,前台通过ajax访问,

先是以‘json’作为数据格式进行访问,直接response field,,

发现是跨域了,尴尬,,,然后改成了‘jsonp’,好了,200 数据也能返回,但是ajax报错.parseerror.

第一种方法:

一堆百度,发现是jsonp格式和json格式是不一样的,jsonp指定了一个callback,然后查一大堆,发现可以解决,但是需要接口返回的时候也把callback指定上,拼接起返回..

感觉这样很不科学啊,,

第二种方法:

然后又是一通百度,发现一个很简单的让接口可以被跨域访问的方法.

直接配置文件下加:

1 <httpProtocol>
2       <customHeaders>
3         <add name="Access-Control-Allow-Origin" value="*" />
4         <add name="Access-Control-Allow-Headers" value="Content-Type" />
5         <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
6       </customHeaders>
7     </httpProtocol>

然后就ok拉,Access-Control-Allow-Origin可以指定允许访问的域名,*代表全允许..

第三种方法:引用System.Web.Cors.dll这个库,也可以做到跨域,只是还未尝试过..

 

顺带把API默认返回XML改为返回JSON的代码贴上

1  GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
2             GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
3                 new QueryStringMapping("datatype", "json", "application/json"));

 

对于很多Post访问,报404的问题,解决如下:

 [HttpPost]
        public bool Test([FromBody]string NAME)
        {
            return true;
        }

然后前端访问的时候:

 $.ajax({
                url: "http://10.12.1.9:9001/api/employee/GetDeptEmployee",
                type: 'post',
                data: { '': 'KD01.0001.0002.0001' },
                dataType: 'json',
                success: function (result) {}});

注意data参数部分,单个参数要留空,,不知是为什么,其余问题可参照下面的链接,很详细。

http://www.cnblogs.com/landeanfen/p/5337072.html

https://www.cnblogs.com/landeanfen/p/5177176.html

posted on   勤劳的Coder  阅读(147)  评论(0编辑  收藏  举报
编辑推荐:
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
阅读排行:
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· 千万级的大表,如何做性能调优?
· .NET周刊【1月第1期 2025-01-05】
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示