域名不同如何跨域呢

L_211314 2017-09-19 08:10:57
比如在本地打架的服务器127.0.0.1:80,通过jquery的ajax或者script的src获取,比如获取https://www.baidu.com/,或者https://www.taobao.com/ 主页html里面内容,请大神怎么解决呢?
...全文
425 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2017-09-20
  • 打赏
  • 举报
回复
你跨域百度或者淘宝只能自己服务器端做代理了,没设置Access-Control-Allow-Originhttp://www.w3dev.cn/article/20130830/ajax-cross-domain-request-control-by-Access-Control-Allow-Origin.aspx允许你跨域请求,不能用ajax请求跨域页面,也没提供jsonp数据 如果页面支持get请求,可以用qyl转为jsonp的 JSONP跨域访问在线代理API
hookee 2017-09-20
  • 打赏
  • 举报
回复
指定了dataType是jsonp,那么取到的返回数据的一定要是js代码: xxxx(data); 就是调用预先定义在页面的函数,不能是HTML代码。 跨域取内容最好还是用服务器端代理的方式,在服务器端去读取跨域的内容,再返回给自己的客户端。
天际的海浪 2017-09-20
  • 打赏
  • 举报
回复
引用 5 楼 L_211314 的回复:
那为什么url:'https://code.jquery.com/jquery-3.2.1.min.js',是这个就不报错呢?
其实jsonp的原理就是先声明一个回调函数callback,并创建一个 script标签,用这个script标签加载你提供的地址,这就要求地址返回的是js代码。不是js代码当然就出错了。 如 callback({"xxxx":123,"yyyy":456}) 这个js代码就是jsonp的格式。执行事先声明的callback函数,并通过函数的参数传递数据。
L_211314 2017-09-19
  • 打赏
  • 举报
回复


里面有数据
L_211314 2017-09-19
  • 打赏
  • 举报
回复
<!doctype html>
<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 <
L_211314 2017-09-19
  • 打赏
  • 举报
回复
那为什么url:'https://code.jquery.com/jquery-3.2.1.min.js',是这个就不报错呢?
L_211314 2017-09-19
  • 打赏
  • 举报
回复
<!doctype html> <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.
天际的海浪 2017-09-19
  • 打赏
  • 举报
回复
用jsonp方式加载的地址必须返回jsonp格式的数据 callback({”xxxxx“:123,"yyyy":456}) 不能是html或者其它格式的数据,也不能是json格式的 ,必须是jsonp格式的数据
天际的海浪 2017-09-19
  • 打赏
  • 举报
回复
或者在自己的服务器端获取跨域的内容,再输出给前端
天际的海浪 2017-09-19
  • 打赏
  • 举报
回复
去看看jsonp的加载形式

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧