如何配置解決跨域的問題
後台使用PHP編寫簡單的介面
網上有很多關於如何配置header來解決跨域請求的問題,如下所示:
1 // 指定允許其他域名訪問 2 header("Access-Control-Allow-Origin:http://127.0.0.1:8282"); 3 // 響應類型 4 header("Access-Control-Allow-Methods:HEAD,POST,GET,PUT,DELETE,OPTIONS"); 5 header("Access-Control-Max-Age:60"); 6 header("Access-Control-Allow-Credentials: true"); 7 // 響應頭設置 8 header("Access-Control-Allow-Headers:x-requested-with,content-type"); 9 10 $res = array("name" => "Echo","age" => 26);11 12 echo json_encode($res);13 return json_encode($res);14
關於代碼中配置的header,我曾嘗試很多次仍沒有辦法成功,現在針對自己的經驗講解注意問題:
Access-Control-Allow-Origin:http://127.0.0.1:8282或者
Access-Control-Allow-Origin:* 兩者配置都可以,但是要注意的是
http://127.0.0.1:8282以及*都不需要帶上單引號或者雙引號!
Access-Control-Allow-Credentials: true 如若配置該項,則在前端請求代碼中的頭部信息中同樣也要配置
//跨域時,cookie添加到請求中$httpProvider.defaults.withCredentials = true;
- 在以上配置好後如果遇到預檢OPTIONS請求,則不妨試試
Access-Control-Allow-Headers:x-requested-with,content-type 在options預檢後,瀏覽器會自動重新發送正常的請求,像這樣:
前端代碼中在配置url時
url="http://127.0.0.1/study/phpServer/test.php";一定不要忘記加上http://如果url=127.0.0.1/study/phpServer/test.php
不然請求地址會在前面加上當前瀏覽地址:http://127.0.0.1:8282/127.0.0.1/study/phpServer/test.php從而請求不到數據
另外據網上信息提示,如果要在
1 | Access-Control-Allow-Origin處理多個域的話,如下設置 |
12345678910 | $sorigin = array (
"domain1" ,
"domain2" );
if (in_array( $origin , $origins )){
header( "Access-Control-Allow-Origin:" . $origin );
header( "Access-Control-Allow-Methods:POST" );
header( "Access-Control-Allow-Headers:x-requested-with,content-type" ); } |
但是暫時還沒有試驗~
推薦閱讀:
※巧制浮漂配釣竿|漁具配置 - 中國釣魚網
※如何在ubuntu14.04上配置擴展顯示屏?(雙屏)
※如何解決租房煩惱?阿里工程師寫了一套神奇的代碼
※多年生觀賞草在園林景觀中的配置類型和應用形式 (一)
※Django發送郵件配置一例