Ajax-跨域

全志V3S开发板实战:从零构建嵌入式Linux系统 本文提供了一份针对全志V3S开发板(如LicheePi Zero)的零基础教程,详细指导如何从零开始构建嵌入式Linux系统。内容涵盖编译环境搭建、交叉工具链配置、U-Boot引导程序编译与烧录、Linux内核定制与编译,以及使用Buildroot构建根文件系统,最终实现系统成功启动,帮助开发者深入理解嵌入式系统构建全流程。 阅读详情

一个域名地址的组成:
这里写图片描述
浏览器有一个很重要的概念——同源策略(Same-Origin Policy)。所谓同源是指域名,协议,端口相同。不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况下,不能读写对方的资源。当协议、子域名、主域名、端口号中任意一个不同时,都算做不同域,不同域之间相互请求资源,就算做“跨域”。

跨域解决方法:
1、代理(后台解决);
2、JSONP(针对 GET 方式);
3、XHR2(IE10以下不支持)。

JSONP

Jsonp原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。此时,服务器先生成 json 数据。然后以 javascript 语法的方式,生成一个function,function 名字就是传递上来的callback的名字。最后将事先生成的 json 数据直接以参数的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。客户端浏览器解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里。

JSONP实例:百度搜索

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            *{ margin: 0; padding: 0;}
            #q{ display: block; width: 300px; height: 30px; border: 1px solid #e1e1e1; margin: 50px auto 0;}
            #ul1{ list-style: none; width: 300px; border: 1px solid #EDEDED; margin: -1px auto 0; display: none;}
            #ul1 li a{ display: block; height: 30px; line-height: 30px; padding: 0 5px; text-decoration: none; color: #666;}
            #ul1 li a:hover{ background: #ededed;}
        </style>
        <script type="text/javascript">
            function jsonpCallback(data){
                var oUl=document.getElementById("ul1");
                var html='';

                if (data.s.length) {
                    oUl.style.display='block';
                    for (var i=0; i<data.s.length; i++) {
                        html+='<li><a target="_blank" href="https://www.baidu.com/s?wd='+ data.s[i] +'">'+ data.s[i] +'</a></li>';
                    }
                    oUl.innerHTML=html;
                }else{
                    oUl.style.display='none';
                }
            }
            window.onload=function(){
                var oQ=document.getElementById("q");
                var oUl=document.getElementById("ul1");

                oQ.onkeyup=function(){
                    if (this.value!='') {
                        var oScript=document.createElement('script');
                        oScript.src='https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?json=1&cb=jsonpCallback&wd='+this.value;
                        document.body.appendChild(oScript);
                    }else{
                        oUl.style.display='none';
                    }

                }
                document.onclick=function(){
                    oUl.style.display='none';
                }
            }
        </script>
    </head>
    <body>
        <input id="q" type="text" />
        <ul id="ul1">
            <!--<li><a target="_blank" href="#">11</a></li>
            <li><a target="_blank" href="#">22</a></li>
            <li><a target="_blank" href="#">33</a></li>-->
        </ul>
    </body>
</html>

JSONP并不是所有跨域通信需求的万灵药,它有一些缺陷。
第一,也是最重要的一点,没有关于 JSONP 调用的错误处理。如果动态脚本插入有效,就执行调用;如果无效,就静默失败。失败是没有任何提示的。例如,不能从服务器捕捉到 404 错误,也不能取消或重新开始请求。
JSONP 的另一个主要缺陷是被不信任的服务使用时会很危险。因为 JSONP 服务返回打包在函数调用中的 JSON 响应,而函数调用是由浏览器执行的,这使宿主 Web 应用程序更容易受到各类攻击。

JQ应用JSONP的实例:上文中的案例,当把GET方法中请求的url由”http://localhost/ajaxdemo/server.php“改为”http://127.0.0.1/ajaxdemo/server.php“之后,就出现了跨域问题。

解决之后的前端代码:

<script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.js"></script>
<script>
$(document).ready(function(){

    $('#search').click(function(){
        $.ajax({
            type:"GET",
            url:"http://127.0.0.1/ajaxdemo/server.php?number=" + $('#keyword').val()+"&"+ Math.random(),
            dataType:'jsonp',
            jsonp:'callback',
            success:function(data){
                if (data.success) {
                    $('#searchResult').html(data.msg);
                }else{
                    $('#searchResult').html('出了错误:'+data.msg);
                }
            },
            error:function(jqXHR){
                alert("发生错误:" + jqXHR.status);
            }
        });
    })
})
</script>

可以看出前端代码仅修改增加了以下代码字段:

dataType:'jsonp',
jsonp:'callback',

服务端代码修改后为:

<?php
header("Content-Type: application/json;charset=utf-8"); 
$staff = array
    (
        array("name" => "洪七", "number" => "101", "sex" => "男", "job" => "总经理"),
        array("name" => "郭靖", "number" => "102", "sex" => "男", "job" => "开发工程师"),
        array("name" => "黄蓉", "number" => "103", "sex" => "女", "job" => "产品经理")
    );

if ($_SERVER["REQUEST_METHOD"] == "GET") {
    search();
} elseif ($_SERVER["REQUEST_METHOD"] == "POST"){
    create();
}

function search(){
    $jsonp=$_GET["callback"];

    if (!isset($_GET["number"]) || empty($_GET["number"])) {
        echo $jsonp.'({"success":false,"msg":"参数错误"})';
        return;
    }

    global $staff;

    $number = $_GET["number"];
    $result = '{"success":false,"msg":"没有找到员工"}';

    foreach ($staff as $value) {
        if ($value["number"] == $number) {
            $result = $jsonp.'({"success":true,"msg":"找到员工:员工编号:' . $value["number"] . 
                            ',员工姓名:' . $value["name"] . 
                            ',员工性别:' . $value["sex"] . 
                            ',员工职位:' . $value["job"] . '"})';
            break;
        }
    }
    echo $result;
}
?>

XHR2

HTML5中提供的XMLHttpRequest Level2(即XHR2)已经实现了跨域访问。但ie10以下不支持。

只需要在服务端填上以下响应头:

header("Access-Control-Allow-Origin:*");
/*星号表示所有的域都可以接受,*/
header("Access-Control-Allow-Methods:GET,POST");

总结:代理实现最麻烦,但使用最广泛,任何支持AJAX的浏览器都可以使用这种方式。JSONP相对简单,但只支持GET方式调用。XHR2最简单,但只支持HTML5,如果是移动端开发,可以选择使用XHR2。

华为OD机试真题 新系统【小花获胜的奶茶】 华为OD机试真题 新系统【小花获胜的奶茶】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小花获胜的奶茶】多语言题解。 阅读详情

相关推荐

PLDM入门(七):FRU Data Format

每个字段为TLV(Type-Length-Value)格式,具体类型、长度范围和值定义需参考。通过条件过滤(记录句柄、类型、字段类型等)分块获取FRU记录数据(可选功能)。整个FRU数据表由多个FRU记录数据块组成,每个数据块对应表2的结构(即包含。决定,每个字段按顺序排列(Type→Length→Value)通过分块传输方式写入FRU记录表数据(需终端支持写入操作)。(文档未提供表5内容,需结合标准文档完整版)。、字段数量、编码类型及具体字段的TLV数据)。无请求数据(空请求)。

weixin_44032634的博客 1762

AJAX跨域

一、什么是AJAX跨域问题、产生AJAX跨域问题的原因 什么是AJAX跨域问题 简单来说,就是前端调用后端服务接口时 如果服务接口不是同一个域,就会产生跨域问题 AJAX跨域场景 前后端分离、服务化的开发模式 前后端开发独立,前端需要大量调用后端接口的场景 只要后端接口不是同一个域,就会产生跨域问题 跨域问题很普遍,解决跨域问题也很重要 AJAX跨域原因 浏览器限制:浏览器安全校验限制 跨域(协议、域名、端口任何一个不一样都会认为是跨域) XHR(XMLHttpRequest)请求 二、

辛聪明的博客 2361

SAP EWM 内向交货流程(一)

本文介绍了SAP EWM系统中内向交货单的基本配置与操作流程。

huqinghai的专栏 2398

Ajax跨域请求

Ajax跨域请求

weixin_72256328的博客 2785

接入穿山甲SDK时,Unity打Android包报错日志

SDK工程设置为Enable,项目工程设置为Disable。2、将unitypackage导入包名为:com.DefaultCompany.Myproject的另一个工程,打包报错。3、点击工程默认弹出Enable Android Auto-resolution 设置选项,点击Enable。1、新建一个空工程,设置包名为:com.ceshi.hewen,正常打包无报错,导出unitypackage。2、点击Reset to Defaults 重置参数,再点击ok关闭设置窗口。

不文不武的禾文 3583

Paho Asynchronous MQTT C Client Library--MQTTAsync API

异步MQTT 客户端库for C

yoyo勰的博客 1264

【AJAX】AJAX的跨域问题

通过超链接、form表单提交、window.location.href、document.location.href、script标签、img标签等方式进行跨域是不存在问题的。但在一个域名的网页中的一段js代码发送AJAX请求去访问另一个域名中的资源,由于同源策略的存在导致无法跨域访问,AJAX就存在这种跨域问题。

qq_63691275的博客 2629

国产系统迁移实战:在银河麒麟V10上搞定Wine32位支持,让老Windows软件跑起来

本文详细介绍了在银河麒麟V10操作系统上构建Wine32位支持的全过程,帮助用户解决Windows应用迁移难题。从系统架构差异分析到Wine环境配置,再到实战应用部署与优化,提供了一套完整的解决方案,确保老Windows软件在国产系统上稳定运行。

weixin_32288959的博客 649

$.ajax 如何跨域,Ajax 跨域如何实现

ajax简介AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,...

weixin_30737081的博客 1538

Oracle GoldenGate (OGG) 实战:从安装到故障排查的完整避坑指南

本文提供了一份详尽的Oracle GoldenGate实战指南,涵盖从环境准备、核心进程配置到性能调优与故障排查的全过程。重点解析了OGG安装与部署中的常见陷阱,并分享了确保数据同步链路稳定运行的高级运维技巧与常见故障处理方法,帮助技术人员高效避坑。

weixin_29230649的博客 380

QT实现图片ROI区域的框选、移动、缩放(附完整源码)

QT实现图片ROI区域的框选、移动、缩放(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1193

ajax跨域问题

什么是Ajax跨域问题 这里通过一个示例来说明。 我们这里准备了2个Springboot工程。 crossdomain-server: 端口:8080 对外提供的接口如下: @RestController @RequestMapping("/test") public class TestController { @RequestMapping("/get") p...

Donny的专栏 5178

实战避坑:基恩士KV8000 PLC与C#上位机链路通讯全流程实现(含ST代码+上位机源码)

本文详细讲解了基恩士KV8000 PLC与C#上位机的TCP链路通讯实现,从PLC端的ST代码编写、通讯配置,到上位机的通讯类封装、界面实现,再到实战避坑和性能优化,提供了完整的可复用方案。该方案已在实际产线项目中验证,支持实时数据采集和控制指令下发,稳定性和可靠性满足工业场景需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1176

Ajax跨域问题

ajax 是不能跨域。那么怎么解决前端发送请求的跨域问题呢。超详细,1、设置响应头、2、通过jsonp 3、通过调用jQuery封装的jsonp 4、httpclient 5、nginx

helpluozhao123的博客 4151

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

AJAX之跨域问题

跨域简单的说,就是从一个域名的网页去访问另一个域名网页的资源。通过超链接或者form表单提交或者window.location.href的方式进行跨域是不存在问题的。但在一个域名的网页中的一段js代码发送ajax请求去访问另一个域名中的资源,由于的存在导致无法跨域访问,那么ajax就存在这种跨域问题。如果协议一致,域名一致,端口号一致,三个要素都一致,才是同源,其它一律都是不同源接下来我们来谈谈ajax中存在的跨域问题如何解决。

少不入川。的博客 2643

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ajax怎么进行跨域请求,Ajax怎么进行跨域请求

Ajax怎么进行跨域请求发布时间:2021-06-22 13:02:34来源:亿速云阅读:64作者:小新这篇文章主要为大家展示了“Ajax怎么进行跨域请求”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax怎么进行跨域请求”这篇文章吧。下面我们在本地建两个站点演示一下第一步首先我们在本地搭建好一个Apache服务器;下载地址;第二步服务器配置好以后,...

weixin_39859220的博客 603

AJAX中不跨域和跨域问题的解决方法

接下来写的都是我自己学习中的一点小经验,如果有不对的地方或者有什么好的建议或意见,请前辈们指点一下~    Ajax跨域和不跨域这个问题,几乎2个星期才搞出来,没办法,用到的知识全部自学的,只能百度一点点解决问题。    前端页面我是用html5+css3写的,引进jquery mobile,这个我也要百度慢慢学习。    大学四年白学习了,一直以为前端页面不能调式,每次写代码都是很

u012354540的博客 5577

解决ajax请求跨域,解决ajax请求跨域

跨域大部分需要通过后台解决,引起跨域的原因:3个问题同时满足 才可能产生跨域问题,即跨域(协议,主机名,端口号中有一个不同就产生跨域)下面是解决方法方法一// ajax请求跨域/**解决ajax跨域----jsonp*/function httpReq() {$.ajax({type:"get",//必须是get请求url: "/testJsonp",data: "data",dataType:"...

weixin_42303721的博客 2893

ajax跨域请求以及传递cookie

声明: 本文章是自己在开发过程遇到问题的经验总结以及结合其他文章的解决思路。 一、ajax跨域访问 什么是跨域? 这是因为浏览器的同源策略会导致跨域,只要协议,域名,端口有任何一个不同,都被当作是不同的域,之间的请求便为跨域操作。跨域访问一般是被阻止的,因为在安全上有个规则:同源策略要求客户端和服务端都必须在一个域内才能通信。比如网站A为a.test.com,网站B为b.test.com。...

Mount华的博客 4843

AJAX请求及解决跨域问题

AJAX请求理解和代码演示 跨域问题解决 案例呈现

xiaowuwjw的博客 1万+

原生AJAX请求以及AJAX跨域问题

说在前面: 传统方法的缺点: 传统的web交互是用户触发一个http请求服务器,然后服务器收到之后,在做出响应到用户,并且返回一个新的页面,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。这个做法浪费了许多带宽,由于每次应用的交互都需要向服务器发送请...

我的博客 3113

jQuery AJAX 设置header 跨域 || 不跨域

一.ajax请求,没有跨域,设置http header头部 $.ajax({ type: "post", url:"http://xxx", dataType: "json", data: {"key":"value"}, // headers : {'Authorizatio...

freedomVenly的博客 5441

ajax跨域的几种解决方案

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port) AJAX跨域请求 下面简单模拟一个场景----->> 前端有.

Gavin 2309

ajax跨域post方式

上一篇博客说了ajaxgetjsonp跨域方式,需要注意的一些事项下面说一下post方式传输数剧以及后端接受。 先直接上ajax代码: $(document).ready(function() { $('#submit1').click(function(){ var data = new FormData($("#form1")[0]); //$("form").se

佐丶枫 8525

ajax是如何实现跨域的,在JS中如何实现ajax与ajax的跨域请求

下面小编就为大家分享一篇原生JS实现ajax与ajax的跨域请求实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧一、原生JS实现ajax第一步获得XMLHttpRequest对象第二步:设置状态监听函数第三步:open一个连接,true是异步请求第四部:send一个请求,可以发送一个对象和字符串,不需要传递数据发送null第五步:在监听函数中,判断readyState=4&am...

weixin_28878117的博客 1693

AJAX——跨域问题

用之前需要引入jQuery库的js文件。(这里的jQuery库咱们就不再封装了,咱们直接用jQuery写好的jsonp方式。协议一致,域名一致,端口号一致,三个要素都一致,才是同源,其它一律都是不同源。牛人们写的jQuery库,已经对jsonp进行了封装。大家可以直接拿来用。jQuery中的jsonp其实就是我们方案2的高度封装,底层原理完全相同。核心原理:跨域访问的资源允许你跨域访问。区分同源和不同源的三要素。...

胖虎虎 570
上一篇: 用jQuery实现Ajax
下一篇: Ajax实例-固定列数的瀑布流
della_uii
博客等级 码龄11年 3粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值