比如在本地打架的服务器127.0.0.1:80,通过jquery的ajax或者script的src获取,比如获取https://www.baidu.com/,或者https://www.taobao.com/ 主页html里面内容,请大神怎么解决呢?
解决方案 »
- 判断语句优化
- Response.Write("<script>alert("+strResult+")</script>") 弹出消息对话框的问题
- 网页中嵌入iframe,怎样禁止鼠标在iframe中拖动嵌入的内容?
- JS客户端回调问题,如何保存状态
- js取得页面中的日期正则怎么写啊。
- 用JQuery的html方法获取td单元格内容,为何在不同的机器上会有不同的值?
- 谁有js版的年月选择器?急 在线等
- window.createPopup() 在ie6运行正确在ie5中则不正确
- 用哪个热键作为运行程序的快捷键好?
- 请高手来更改
- jbox iframe子页面和父页面相互调用不到各自的JS方法
- web中高德地图的逆向地理编码不成功
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>proxy_test</title>
<style type="text/css">
#box{
width:100px;
height: 100px;
background:red;
}
</style>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>
</head>
<body>
<div id="box"></div>
<script type="text/javascript">
$('#box').on('click',function(){
$.ajax({
type:'get',
url:'http://www.hpmplay.com/index.html',
dataTypa:'jsonp',
jsonp:'callback',
success:function(data){
console.log(data)
}
})
})
</script>
</body>
</html>会报错XMLHttpRequest cannot load http://www.hpmplay.com/index.html. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1' is therefore not allowed access.
callback({”xxxxx“:123,"yyyy":456})不能是html或者其它格式的数据,也不能是json格式的 ,必须是jsonp格式的数据
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>proxy_test</title>
<style type="text/css">
#box{
width:100px;
height: 100px;
background:red;
}
</style>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>
</head>
<body>
<div id="box"></div>
<script type="text/javascript">
$(function(){
$.ajax({
type:'get',
url:'http://www.hpmplay.com/',
dataType:'jsonp',
jsonp:'callback',
success:function(jsonp){
alert(jsonp)
}
})
})
</script>
</body>
</html>现在报错Uncaught SyntaxError: Unexpected token <
其实jsonp的原理就是先声明一个回调函数callback,并创建一个 script标签,用这个script标签加载你提供的地址,这就要求地址返回的是js代码。不是js代码当然就出错了。
如
callback({"xxxx":123,"yyyy":456})
这个js代码就是jsonp的格式。执行事先声明的callback函数,并通过函数的参数传递数据。
跨域取内容最好还是用服务器端代理的方式,在服务器端去读取跨域的内容,再返回给自己的客户端。
JSONP跨域访问在线代理API