首页 新闻 赞助 找找看

js跨域访问问题

1
悬赏园豆:40 [已解决问题] 解决于 2012-06-20 13:36
 晓得杂解决跨域 吧 

我用的是ajax请求的

var tep="网络原因出错";
tep=$.ajax({
url:"http://openapi.baidu.com/public/2.0/bmt/translate?client_id=2ALMz6WqUEcsBg4BS91Eppq3&q="+str+"&from=auto&to=auto",
type:"post",
dataType:"html",
data: "name="+vg,
error: function(){
// alert("Http status: "+xhr.status+" "+xhr,statusText+"\najaxOptions:"+ajaxOptions+"\nthrownError:"+thrownError+"\n"+xhr.responseText );
alert("请设置:Internet选项-安全-自定义级别-其它-跨域访问数据源设置为“启用”状态");
},
success:function(msg)
{
var msg = eval("("+msg+")");//接受翻译后返回来的结果
obj.innerHTML=msg.trans_result[0].dst;//翻译后的结果
}
});

也就是访问baidu翻译的api那个页面的时候必须手动 设置Inernet 选项 安全


才能访问 ,查了很多,还是没找到方法,请高手指点下 先谢谢!

lin_yue的主页 lin_yue | 初学一级 | 园豆:151
提问于:2012-06-18 16:15
< >
分享
最佳答案
0
收获园豆:40
dudu | 高人七级 |园豆:31075 | 2012-06-18 17:18
其他回答(5)
0

是什么错误?跨域访问失败了?

这个没弄过,所以没办法给你什么支持,不过你可以:

1、尝试跨域访问一个随便的网页,看是否能获得结果

2、如果不能获得结果,那是跨域访问限制了。

3、如果能获得结果,那是你调用的这个目标地址被限制了。

 

先把问题点确定下来,其中,你可以使用FIDDLER(fiddler2.com可下载)跟踪下数据。

无之无 | 园豆:5095 (大侠五级) | 2012-06-18 16:19

将ie安全设置 里面的 “跨域访问数据源” 就可以返回结果了,但是作为我们自己明白是ie的安全问题 但是站在客户端着想,总不能让每个客户都这样弄 那样显得你的网站太不好了吧,所以希望大家帮忙下 

支持(0) 反对(0) lin_yue | 园豆:151 (初学一级) | 2012-06-18 16:42

@lin_yue: 这个问题。。。

浏览器既然有限制,自然是为了安全着想,假如。。。能在网页里通过代码来解决这个问题,那么,这个安全的限制也就失去了意义。

不过,我倒是知道一个方案(但具体的还是忘记了),能在配置后忽略这个安全设置,只是这个设置是对双方都要进行信任级别控制的,也就是说,需要在百度的这个网站下面配置下允许来自你的网站下的跨域访问,类似于FLASH下的沙箱(SL里也有,SandBox),但这个方案,显然是不可行的(你不可能去要求百度为你修改,百度也不可能为所有的用户提供修改)。

解决你这个问题的另外一个方案就是在服务器操作了。在服务器写一个服务,实现这个请求的代理功能,由这个服务去访问第三方的服务(如你要做的这个百度的服务)

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-18 16:52
0

用getJson

snjsunyan | 园豆:55 (初学一级) | 2012-06-18 16:19
0

这个是浏览器为了安全一般不允许跨域访问数据的!经过设置之后才可以!

MingHao_Hu | 园豆:8 (初学一级) | 2012-06-18 17:41
0

尽量不要跨域,比较麻烦。

figofeng | 园豆:5 (初学一级) | 2012-06-19 08:39

是否可以考虑webservice 来满足要求

支持(0) 反对(0) figofeng | 园豆:5 (初学一级) | 2012-06-19 08:40
0

谢谢各位了。

lin_yue | 园豆:151 (初学一级) | 2012-06-19 10:48

楼主:我也遇到你同样的问题 能否帮忙说下 你怎么解决的啊 

支持(0) 反对(0) gowindows | 园豆:200 (初学一级) | 2013-03-11 10:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册