zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Manjaro Linux自带的Python没有安装IDLE的解决办法
    Python入门 | IDLE的介绍和使用方法
    用U盘装CentOS 7出现dracut:/#问题的解决办法
    在Ubuntu下,如何安装坚果云deb文件
    windows7下进行ubuntu U盘启动盘的制作
    oracle 死锁和锁等待区别
    MySQL数据库设计总结
    oracle开机自启
    微信备份提示当前网络状况复杂,请尝试使用其他网络的解决方法
    ORA-27090 Unable to reserve kernel resources for asynchronous disk I/O
  • 原文地址:https://www.cnblogs.com/toloe/p/8342018.html
Copyright © 2011-2022 走看看