位置:长沙达内IT教育培训学校 > 学校动态 > 如何解决414 Request的问题
很多网站为了提高访问量,把好的东西让更多的用户可以看到,而提供了网页分享功能。百度分享是不错的一个插件,其2.0版本支持用户自定义分享的URL,标题、摘要和图片等内容,用户使用百度分享可以较为方便的分享到主流社交平台。
但是,在自定义相关配置后,当用户将内容分享到微博平台时,会发生“414 Request-URI Too Large”的问题。如下图所示:
在网上查找了很多内容,都没有很好的解决这一问题。
一、问题描述
自定义百度分享的配置后,用户将内容分享到微博平台时,发生“414 Request-URI Too Large”。
一般在把内容分享到微博平台时,用户往往把百度分享配置中的“bdText”修改为下面的形式:
var title = document.title; #网页标题
var desc = $("meta[name=description]").attr('content'); #网页内容描述或摘要
if(title.length + desc.length > 120) //标题和描述总长度过长时,进行截取
desc = desc.substring(0,120-title.length) + "...";
....
//百度配置
"bdText": '【' + title +'】'+ desc + '其它内容.',
....
"bdText"中去掉desc中的内容,分享就正常,但只包括标题和网址信息,即使你配置了"bdDesc"参数也是如此,加上desc中的内容,且超过一定长度时就会出错,即使你的desc很短也不行。
二、产生原因
经多次验证发现,一旦配置“bdText”的长度超过某个值时,分享地址中就会附加堆内容,除了正常的url参数、title参数、searchpic参数,appkey参数等之外,分享的网址中还会把来源网址加进去,来源网址中包括了百度分享插件的网址,且又重复了上面各个参数的内容,设置是通用配置"common"中其它参数的内容,在进行url编码后,造成请求的URI过长。
当然,附加到后面的这些参数是百度分享添加进去的还是新浪微博平台自动加进去的,这个暂时没有验证。
三、解决方案
分析网上的解决方案,基本上是把desc中的内容设置的特别短,但实际上你会发现,分享微博中的内容除了标题也无法提供更多的信息,甚至,你自己还可以输入百十个字也不会有任何问题。
网上还有一种方案是把百度分享的所有文件下载到自己的服务器上进行改造,但这不可取,失去了使用百度分享应有的意义。
本站给出的解决方案如下:
使用百度分享中提供的onBeforeClick()事件处理函数来处理这个问题,即当用户点击的是微博分享时,重新配置相关参数,使它符合自己的需要,详细配置代码如下:
var title = document.title,
desc = $("meta[name=description]").attr("content"),
pic = $('meta[property="og:image"]').attr("content");
/*描述简介的处理*/
if(desc.length + title.length > 100){
desc = desc.substring(0,100 - title.length);
}
/*分享设置*/
window._bd_share_config={
"common":{
"bdSnsKey":{},
"bdText" : "【"+title+"】"+desc+"- :",
"bdDesc" : desc,
"bdComment" : ,
"bdPic" : pic,
"bdMini" : "2",
"bdSign" : 'off',
"bdMiniList" : false,
"bdStyle" : "1",
"bdSize" : "32",
onBeforeClick:function(cmd,config){
if(cmd=='tsina'){
config.bdText = '【'+title+'】'+desc+'-分享自 @翔宇亭IT乐园,详情:';
config.bdDesc = '';
config.bdComment = '';
return config;
}
}
},"share":{}
};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(
createElement('script')).src=
'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='
+~(-new Date()/36e5)];
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1684/news/330913/违者必究! 以上就是长沙达内IT教育培训学校 小编为您整理 如何解决414 Request的问题的全部内容。