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

  • 相关阅读:
    隐藏Nginx、Apache、PHP的版本信息
    PHP 安装版本选择
    Python 队列实现广度搜索算法 附上迷宫实例
    PHP 利用栈实现迷宫算法
    Python 和 PHP 实现 队列 和 栈 以及 利用栈实现符号匹配算法
    tp5 安装migration 报错 Installation failed, reverting ./composer.json to its original content.
    Redis 有序集合
    Redis 集合命令记录
    ‘This support library should not use a different version’解决方案
    build.gradle文件详解(二)
  • 原文地址:https://www.cnblogs.com/myesn/p/javascript-cors-jsonp.html
Copyright © 2011-2022 走看看