angular+php+nginx,前端需要跨域請(qǐng)求api,所以在接口的BaseController.php加上這幾行
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
加上這幾行 后赁项,部署到CentOS后,一切正常澈段。但因客戶服務(wù)器遷移到windows悠菜,用的upupw,php是5.6版本败富。問題來了悔醋!
Cannot modify header information - headers already sent by
百度搜的解決辦法,刪除BOM兽叮、文件頭尾用ob_start()和ob_end_flush()芬骄,不行,還參考(http://blog.csdn.net/zemochen/article/details/53868817)用nginx 設(shè)置了CORS鹦聪,但竟然沒生效账阻,可能還是其中某個(gè)設(shè)置沒對(duì),一時(shí)也不知原因泽本。后來實(shí)在不行淘太,用nginx做了反向代理,前端和api都用個(gè)二級(jí)域名规丽,BaseController.php里那三行header去掉蒲牧,跨域的問題解決了(只是測(cè)試時(shí)又碰到崩潰的事情,其實(shí)nginx設(shè)置成功了嘁捷,但chrome測(cè)試造成,還是報(bào)不能跨域,原因是chrome還是之前的緩存雄嚣,浪費(fèi)好多時(shí)間)晒屎,跨域驗(yàn)證成功后喘蟆,出現(xiàn)另外的錯(cuò)誤,
$http_raw_post_data is deprecated
同時(shí)還有報(bào)錯(cuò)
Cannot modify header information - headers already sent by
最后按提示編輯php.ini 鼓鲁,設(shè)置
always_populate_raw_post_data = -1
重啟nginx和fpm蕴轨,問題解決『Э裕看來問題的關(guān)鍵還是在always_populate_raw_post_data = -1這個(gè)設(shè)置上橙弱,為了驗(yàn)證,我把nginx反向代理設(shè)置去掉燥狰,把BaseController.php的header設(shè)置加上棘脐,前端跨域請(qǐng)求服務(wù)器,一切正常龙致,問題解決蛀缝。