跨域

2 篇文章 0 订阅

jsonp:

$(function(){

  $.ajax({

    async: false,

    type: "GET",

    dataType: 'jsonp',

    jsonp: 'callback',

    jsonpCallback: 'callbackfunction',

    url: "http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js",

    data: "",

    timeout: 3000,

    contentType: "application/json;utf-8",

    success: function(msg) {

      console.log(msg);

    }

  });

})

通过js跨域向https发起请求,方法:

$.ajax({
   
type: 'post',
   
headers:{
       
"Access-Control-Allow-Headers":"X-Requested-With"
    },
   
dataType:"jsonp",
   
connection:'https',
   
url: 'https://192.168.90.16:9081',
   
success: function(data,status,xhr){
       
$('#btn').text("编号为"+data.status+"姓名为"+data.message);
    },
   
error: alert("hello world")
})


浏览器对跨域请求分为“简单请求”和 “非简单请求”

简单请求满足以下特征:

1) 请求方法是以下三种方法之一:

     HEAD

     GET

     POST

2HTTP的头信息不超出以下几种字段:

     Accept

     Accept-Language

     Content-Language

     Last-Event-ID

     Content-Type

         application/x-www-form-urlencoded multipart/form-datatext/plain

浏览器判断跨域为简单请求时候,会在Request Header中添加 Origin (协议 + 域名 + 端口)字段 它表示我们的请求源,CORS服务端会将该字段作为跨源标志。

总结:简单请求只需要CORS服务端在接受到携带Origin字段的跨域请求后,在response header中添加Access-Control-Allow-Origin等字段给浏览器做同源判断


进行非简单请求时候 浏览器会首先发出类型为OPTIONS预检请求,请求地址相同  

CORS服务端对预检请求处理,并对Response Header添加验证字段,客户端接受到预检请求的返回值进行一次请求预判断,验证通过后,主请求发起。


如果设置里contentType=application/json的话,则会显示连续发送两次请求,第一次为options。是浏览器发送预检请求,第二次才是发送的真实请求内容和请求方法


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值