如何配置解決跨域的問題

後台使用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,我曾嘗試很多次仍沒有辦法成功,現在針對自己的經驗講解注意問題:

  1. Access-Control-Allow-Origin:http://127.0.0.1:8282或者

    Access-Control-Allow-Origin:* 兩者配置都可以,但是要注意的是

    http://127.0.0.1:8282以及*都不需要帶上單引號或者雙引號!

  2. Access-Control-Allow-Credentials: true 如若配置該項,則在前端請求代碼中的頭部信息中同樣也要配置

    //跨域時,cookie添加到請求中$httpProvider.defaults.withCredentials = true;

  3. 在以上配置好後如果遇到預檢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發送郵件配置一例

TAG:配置 | 跨域 | 問題 |