如何配置解決跨域的問題


后台使用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
從而請求不到數據

 另外據網上信息提示,如果要在

Access-Control-Allow-Origin處理多個域的話,如下設置
$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');  
}  

  但是暫時還沒有試驗~



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM