1.”源” 源是指协议、域名和端口号
2.”同源策略” 同源策略是浏览器的一个安全功能,当前域的内容不能访问其他域的内容
3.jQuery 的 JSONP 请求 JSONP 是一种[请求一段 JS 脚本,把执行这段脚本的结果当做数据]的做法,所以只能 get 请求。 [凡是拥有 src 属性的标签都有跨域能力]
3.1JSONP 的客户端实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <!DOCTYPE html > <html > <head > <meta charset ="utf-8" /> </head > <body > <script type ="text/javascript" src ="../jquery.min.js" > </script > <script > $(function ( ){ $.ajax ({ url :'http://localhost:5000/api/values/getalljsonp?callback=?' , type :'get' , datatype :'jsonp' , success :function (msg ){ console .log (msg); } }); $.getJSON ('http://localhost:5000/api/values/getalljsonp?callback=?' , function (msg ){ console .log (msg) }); }); </script > <body > </html >
3.2JSONP 服务端(dotnet core) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 using Newtonsoft.Json;using System;... namespace WebApiTest { [Route("api/[controller]/[Action]" ) ] public class ValuesController : ApiController { [HttpGet ] public string GetAllJsonP (string callback ) { List<TestModel> list = new List<TestModel>(); for (int i=0 ; i < 10 ; i++) { TestModel model = new TestModel() { Id = i, Name = $"测试{i} " }; list.Add(model); } var json = JsonConvert.SerializeObject(list); json = $"{callback} ({json} )" ; return json; } } public class TestModel { public int Id { get ; set ;} public string Name { get ; set ;} } }