下載了B-JUI前端框架想學(xué)習(xí)一下,結(jié)果解壓后直接雙擊打開index.html文件,提示一個(gè)JSON(menu-form.json)未加載成功,左側(cè)目錄樹出不來匿辩,搜索了一下仿佛是跨域問題
網(wǎng)上說即便是同一個(gè)網(wǎng)站的內(nèi)容,用AJAX請(qǐng)求JSON的時(shí)候也是跨域榛丢,感覺真是坑
但是搗鼓了半天也沒解決铲球。把解壓后的整個(gè)文件夾放到本地測(cè)試環(huán)境中的網(wǎng)站目錄里,訪問的時(shí)候也同樣提示405 NOT ALLOWED
又是一頓搜索晰赞,一會(huì)兒覺得是跨域稼病,但是配置NGINX跨域的教程真的跟看天書一樣,感覺自己真的是老了掖鱼。然走。。
后來發(fā)現(xiàn)戏挡,在chrome調(diào)試界面把對(duì)于這個(gè)JSON的請(qǐng)求方式由POST強(qiáng)制改為GET就OK芍瑞。然后又是一頓搜索,發(fā)現(xiàn)NGINX果然默認(rèn)是不支持POST訪問靜態(tài)資源的褐墅。于是按照教程拆檬,在NGINX配置文件中加入:
error_page 405 =200 @405;
? ? ? ? location @405 {
? ? ? ? root 網(wǎng)站根目錄路徑;
? ? ? ? proxy_method GET;
? ? ? ? proxy_pass 網(wǎng)站域名;
? ? }
重啟NGINX:sudo nginx -s reload
問題解決!
小結(jié)一下知識(shí)點(diǎn):
1.跨域問題是瀏覽器造成的妥凳,不同瀏覽器的跨域策略不同竟贯,有的嚴(yán)格,例如chrome逝钥,有的不是那么嚴(yán)屑那,例如edge和ff,主要還是考慮安全問題艘款。
2.用AJAX請(qǐng)求靜態(tài)資源推薦用GET持际,而不是POST,至于為什么B-JUI要設(shè)置POST請(qǐng)求一個(gè)JSON哗咆,我猜測(cè)可能是因?yàn)榫W(wǎng)站后臺(tái)管理目錄有時(shí)候需要針對(duì)不同的權(quán)限進(jìn)行微調(diào)蜘欲,例如網(wǎng)站管理員可以對(duì)網(wǎng)站全局進(jìn)行配置,而一般編輯就不行岳枷,所以可以考慮用一個(gè)php來根據(jù)用戶登陸的權(quán)限來動(dòng)態(tài)生成JSON芒填,但是在哪里把請(qǐng)求地址由原來的menu-form.json改為動(dòng)態(tài)的php文件還要研究一下。
3.nginx默認(rèn)是不支持用POST方法請(qǐng)求靜態(tài)文件的空繁,這點(diǎn)貌似跟Apache不同殿衰,需要進(jìn)行如上的手動(dòng)配置。ubuntu系統(tǒng)nginx的配置文件在/etc/nginx/目錄中盛泡,ls一下文件名都很好理解闷祥。
就這么多把,接下來就要開始學(xué)習(xí)b-jui框架了,要學(xué)的東西真多凯砍。箱硕。。感覺快學(xué)不過來了