zoukankan      html  css  js  c++  java
  • ajax跨域问题

     *近期在开发过程中,由于两个项目之间需要通信,使用了ajax,发现普通的ajax跨域完成不了,查询资料得知:由于同源策略,ajax跨域被禁止,解释截图如下

      经过Google得到了初步的解决方法:使用jsonp.简单解释一下jsonp的原理:

        JSONP(JSONP - JSON with Padding是JSON的一种“使用模式”),利用script标签的src属性(浏览器允许script标签跨域),通过动态创建一个script标签,指定src属性为跨域的api,那么html会把返回的字符创当作javascript代码来进行解析,如果我们在返回的字符串中使用自定义函数形式包装起来,然后在html中调用自定义函数,即可拿到返回的字符串

    下面贴入简短的demo

    前端ajax:

    function crossDomain(){
        $.ajax({
    	method:'get',
    	dataType:'jsonp',
    	jsonp:'cb',
    	url:'http://localhost:8081/excms/nldoRunT.action?handler=consult.doCross'
        });
    }
    				
    function cb(msg){
        console.log(msg);
        alert(msg);
    }
    

     后台就像ajax一样返回字符串即可,但是对字符串有点小小的要求:

      例如上面js中回调函数是cb(msg),所以后台返回的字符串格式为"cb(xxxxx)",要使用cb()将你要返回的数据包裹起来即可.

    请注意:由于jsonp方法使用的是script机制,所以jsonp只能发送get请求,

    解决post请求的跨域问题:在服务器处理方法中加上一行代码

    response.setHeader("Access-Control-Allow-Origin", "*");
    

    其中 * 可以设置自己允许地址.

     
  • 相关阅读:
    计算机操作系统 存储器管理
    数据结构 平衡二叉树avl c++
    数据结构 线索二叉树 c++
    数据结构 赫夫曼树及其应用 c++
    c++ cstring 常用函数
    数据结构 哈希表 c++
    数据结构 静态链表
    ajax返回填充的数据不显示
    使用JSON.parse()转化成json对象需要注意的地方
    参数错误导致bug
  • 原文地址:https://www.cnblogs.com/carryLess/p/7772967.html
Copyright © 2011-2022 走看看