記錄遇到的一個(gè)bug亩冬,H5端調(diào)用原生的相機(jī)和相冊(cè)上傳頭像艘希,但是相冊(cè)選擇后上傳沒(méi)問(wèn)題(后面發(fā)現(xiàn)也是有問(wèn)題的),相機(jī)拍完照后上傳卻報(bào)如下錯(cuò)誤:
"Failed to load [http://shopinter.lkkjjt.com/bus/upload/authen] No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '[http://h5.lkkjjt.com](http://h5.lkkjjt.com/)' is therefore not allowed access.", source: [http://h5.lkkjjt.com/bus/my/authen](http://h5.lkkjjt.com/bus/my/authen) (0)
猛的一看硅急,跨域問(wèn)題枢冤?第一反應(yīng)想找前端同事,但是ios是可以的铜秆,用android原生瀏覽器拍照也可以,那就是自己代碼的問(wèn)題了讶迁,可是我的代碼已經(jīng)配置好了
/* 設(shè)置可以訪問(wèn)文件 */
mWebView.getSettings().setAllowFileAccess(true);
// 是否允許通過(guò)file url加載的Javascript讀取本地文件连茧,默認(rèn)值 false
mWebView.getSettings().setAllowFileAccessFromFileURLs(true);
// 是否允許通過(guò)file url加載的Javascript讀取全部資源(包括文件,http,https)核蘸,默認(rèn)值 false
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
百度一番有的說(shuō)要這么配置:
try {
Class<?> clazz = webView.getSettings().getClass();
Method method = clazz.getMethod("setAllowUniversalAccessFromFileURLs", boolean.class);
if (method != null) {
method.invoke(webView.getSettings(), true);
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
運(yùn)行測(cè)試還是不行,于是懷疑是不是拍照存儲(chǔ)的路徑有問(wèn)題啸驯,改了路徑測(cè)試不行客扎。然后在想為什么選擇圖片就可以呢?
一波操作罚斗!點(diǎn)擊選擇相冊(cè)徙鱼,選擇剛拍的照片,確定针姿。
袱吆。。距淫。绞绒。。榕暇。
傳不了蓬衡,還是報(bào)跨域的錯(cuò)誤!M唷狰晚!
就在此時(shí),不經(jīng)意瞄了下照片的大小缴啡,2M多壁晒,額,感覺(jué)是照片大小的問(wèn)題盟猖。
又一波操作讨衣!拍完的照片,選擇的照片統(tǒng)統(tǒng)壓縮式镐,運(yùn)行測(cè)試反镇,哎!娘汞,可以了歹茶!之所以之前測(cè)試選擇相冊(cè)可以上傳,那是照片大小不大你弦,在200k以下惊豺。
好了,終于解決了禽作,不知道為什么照片太大尸昧,會(huì)報(bào)跨域問(wèn)題!?醭ァ烹俗!