关于js跨域

get方式:

称为jsonp,就是js的跨域通信方式,因为知道有些标签可以跨域获取内容,例如img,script,link...,jsonp就是把动态创建一个script标签,然后配置src属性,后台代码返回的时一个函数,称之回调函数,后台完成业务后,调用下面这个AjaxHandleCrossDomainFormat()来返回一个要回调函数,后台执行完成后并返回此js代码,然后调用js的success_jsonpCallback方法,因为ajax封装好了,所以直接在参数[jsonpCallback]处写这个方法的名称即可,至于ajax中jsonp这个参数就类似于url中的ID=1,在这里时callback=success_jsonpCallback(),这些名字可以随便改,实现跨域也可以用iframe之类的,也可以不用ajax,动态创建一个script标签,把网址赋进去,然后本地在写一个方法,后台返回值就是这个方法,他自己就会调用,

还有,了解到,jsonp作为一种数据传输方法,和ajax的意义是相冲突的,本身jsonp是不应该集成在ajax中的,跨域的简单笔记完成~

  private string AjaxHandleCrossDomainFormat(string Json, string callbackparam = null)
        {
            if (callbackparam == null)
            {
                return "success_jsonpCallback([" + Json.Replace(@"
", "").Replace(""", "'").Replace(@"", "") + "])";
            }
            else
            {
                return callbackparam + "([" + Json.Replace("
", "").Replace(""", "'").Replace(@"", "") + "])";
            }
        }

ajax: 

$.ajax({
                type: "post",
                url: "http://myesn.cn/remote.js",
                dataType: "jsonp",
                jsonp: "callback",
                jsonpCallback: "success_jsonpCallback",
                success: function (data) {
                    console.trace();
                    console.log(data.result);
                },
                error: function (msg) {
                    console.log(msg.statusText);
                }
            });


Post方式:

添加IIS的mime类型,添加以下三个就可以了,改变Access-Control-Allow-Origin 就可以限制来访的网址

Access-Control-Allow-Headers:*

Access-Control-Allow-Methods:POST

Access-Control-Allow-Origin:*

原文地址:https://www.cnblogs.com/myesn/p/javascript-cors-jsonp.html