跨域

摘要:
跨域:协议、域名、端口,任何一个都不同;1.浏览器受到安全考虑的限制。2.同时满足跨域3.XHR(XMLHttpRequest)请求;原因:它来自于跨域安全策略。默认情况下,XHR(XMLHttpRequest)对象只能访问与包含它们的页面相同域中的资源。此安全策略可以防止恶意行为;解决方案:只要它不是XHR(XMLHttpRequest)请求,它就不是跨域的,---JS

跨域:协议、域名、端口、任何一个不一样,都是跨域;

1、浏览器处于安全的考虑限制

2、跨域

3、XHR(XMLHttpRequest)请求 这三个同时满足即为跨域;

原因:来源于跨域安全策略,默认情况,XHR(XMLHttpRequest)对象只能访问与包含它的页面位于同一个域中的资源,这种安全策略可以预防恶意行为;

解决思路:只要发出的不是XHR(XMLHttpRequest)请求 ,就不是跨域, ----JSONP方法;

JSONP思路:动态的创建script,在script里发出跨域请求;

JSONP知识补充:JSONP JSON with Padding 是json的一种补充;

使用动态的创建script标签,返回js代码,返回的json对象会被当成js代码处理,会报错;需要后台改动,

弊端:1、服务器需要改代码;2、只支持GET方法 3、发送的不是XHR请求

与普通ajax 区别:1、实质不同 ajax的核心是通过xmlHttpRequest获取非本页内容;jsonp的核心是动态添加script标签调用服务器提供的js脚本

2、发送请求的类型不一样:ajax:XHR ; JSONP:script

3、返回的类型不一样:ajax:json对象 jsonp:js脚本;

JSONP书写:

$.ajax({
     type:"get",    //请求方式
     async:true,    //是否异步
     url:"http://www.domain.net/url",
     dataType:"jsonp",    //跨域json请求一定是jsonp
jsonp: "callbackparam",    //跨域请求的参数名,默认是callback   自己可以配合后端更改
         //jsonpCallback:"successCallback",    //自定义跨域参数值,回调函数名也是一样,默认为jQuery自动生成的字符串
     data:{"query":"civilnews"},    //请求参数
 
     beforeSend: function() {
//请求前的处理 }, success: function(data) { //请求成功处理,和本地回调完全一样 }, complete: function() { //请求完成的处理 }, error: function() { //请求出错处理 } });
复制代码
$.ajax({
type:"get", //请求方式,此处给post仍会以get方式提交
dataType:"jsonp", //预期服务器返回的数据类型
jsonp:"callback", //在一个jsonp请求中重写回调函数的名字
jsonpCallback:"callback", //为jsonp请求指定一个回调函数名
url:"http://127.0.0.1/login", //请求地址
data:"{name:'张三',pass:'123456'}",//请求参数
success:function(data){
//请求成功后的处理}
},
'json');

免责声明:文章转载自《跨域》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MongoDB基础命令及操作ashx文件中使用session提示“未将对象引用设置到对象的实例”下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

将Delphi的对象方法设为回调函数

心血来潮,为了实现更好的通用性和封装性,需要把类方法作为回调函数,搜得一篇好文,节选转发。命名似乎应该是MethodToCallback才合适,可惜调试时总是报错,debugging。 原文地址:http://blog.csdn.net/linzhengqun/article/details/1451088 Win32的API有一些需要回调函数,说白...

手写Promise看着一篇就足够了

    目录 概要 博客思路 API的特性与手写源码 构造函数 then catch Promise.resolved Promise.rejected Promise.all Promise.race 概要 本文主要介绍了Promise上定义的api的特性,以及手写如何实现这些特性。目的是把学习过程中的产出以博客的方式输出,巩固知识,也便...

Pipe(管道),Event(事件),Semaphore(信号量),Pool(进程池),回调函数

一、关于Pipe(管道)队列就是基于管道的方法,不常用,因为管道中的内容是共享的,数据不安全,而且一个数据取走后,其他人没法接收. 由Pipe方法返回的两个连接对象表示管道的两端。每个连接对象都有send和recv方法(除其他之外)。注意,如果两个进程(或线程)试图同时从管道的同一端读取或写入数据,那么管道中的数据可能会损坏。当然,在使用管道的不同端部的过...

OpenCV学习系列教程第一篇:处理鼠标事件

来自opencv-python官方学习文档,本人谨做翻译和注释,以及一些自己的理解 本文由作者翻译并进行代码验证,转载请注明出处~ 官方文档请参阅:https://docs.opencv.org/4.0.1/db/d5b/tutorial_py_mouse_handling.html 运行环境: windows 10+pycharm professiona...

js forEach参数详解,forEach与for循环区别,forEach中如何删除数组元素

 壹 ❀ 引 在JS开发工作中,遍历数组的操作可谓十分常见了,那么像for循环,forEach此类方法自然也不会陌生,我个人也觉得forEach不值得写一篇博客记录,直到我遇到了一个有趣的问题,我们来看一段代码: let arr = [1, 2]; arr.forEach((item, index) => { arr.splice(inde...

Scrapy学习篇(五)之Spiders

Spiders Spider类定义了如何爬取某个网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。简而言之,Spider就是你定义爬取的动作及分析某个网页(或者是有些网页)的地方。 对spider来说,爬取的循环类似如下: 以初始的URL(start_urls或者start_requests())初始化Re...