同源策略
所谓同源是指,域名,协议,端口相同。
当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面
当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。
如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。
浏览器的同源策略为:当你用ajax
发请求时,若请求的地址不同源,则不能访问。此为浏览器的一个安全机制。
JSONP的思路
使用ajax
虽然不能直接访问请求的url
路径,但是可以引用非同源的js
,css
等一般情况下具有src
属性的标签。
function submit_Jsonp_cross_domain() {
var tag = document.createElement('script');
//下面这句话返回一个HTTP__RESPONSE字符串
//返回fuck("arg"),正好调用下面的参数
tag.src = 'http://localhost:9191/cross_domain';
document.head.appendChild(tag);
document.head.removeChild(tag);
}
function fuck(arg) {
alert(arg)
}
注意一下:
- 也可以在ajax的请求后面添加参数,告诉被请求的URL这就是我想要的回调函数的名字
用jQuery实现
function submitJsonp4() {
$.ajax({
url: 'http://127.0.0.1:9000/xiaokai.html',
type: 'POST',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'func'
})
}
function func(arg) {
console.log(arg);
}
小江总结:
- 标志这个请求和别的请求不一样,
dataType
用jsonP
-
jsonp
的请求参数要设置一下啊,jsonp
为callback
- 回调函数的名字:
func
, 在本地执行的