跨域資源共享(Cross-Origin Resource Sharing, CORS) 是一種Web技術,它允許瀏覽器在請求資源時向不同的網域發送 AJAX請求。在使用 Web 服務時,CORS 允許瀏覽器從另一個網域請求資料。本文將介紹如何在 PHP 專案中設定跨域存取。
什麼是跨域?
跨網域是指在 Web 開發中,瀏覽器所執行的腳本試圖存取不同於頁面來自的伺服器的來源。例如,在www.example.com的網頁上,如果腳本試圖存取http://www.example.org的伺服器,那麼就稱為跨網域請求。
為什麼要設定跨域?
Web 瀏覽器實作了同源策略(Same-Origin Policy),它是一種基本的 Web 安全性策略,它限制了一個腳本只能存取同源網站的內容。同源站點是指 協定, 網域, 連接埠相同 的站點。如果沒有同源策略的限制,那麼跨域請求可以輕鬆進攻用戶的帳戶。例如,如果你在線上購買了一本書,而一個惡意的腳本可以輕易地從不同的網域中存取你的帳戶,也可以使用你的帳戶來進行付款。
如何設定跨域?
在 PHP 專案中,可以透過設定回應頭來建立跨域請求(CORS)。
設定「Access-Control-Allow-Origin」 回應頭,它允許來自某個網域的請求。例如,如果AJAX請求需要從 “http://localhost:3000” 發送請求,那麼就可以在伺服器的回應頭中加入以下行。
header("Access-Control-Allow-Origin:http://localhost:3000");
設定Allow-Origin是允許某個網域跨網域要求,同時也需要設定Access-Control-Allow-Headers ,以允許自訂的請求頭。例如,如果AJAX請求要傳送自訂請求頭 "X-Custom-Header",則需要在回應頭中新增下列行。
header("Access-Control-Allow-Headers: X-Custom-Header");
Access-Control-Allow-Methods 指定哪些請求方法是允許的,只要在回應頭中加入下列行,例如,這個範例設定允許GET和POST方法。
header('Access-Control-Allow-Methods: GET, POST');
#如果需要傳送 cookies,則 Access-Control-Allow-Credentials 應該設定為 「true」。例如,讓瀏覽器帶上 cookie 請求。
header('Access-Control-Allow-Credentials: true');
總結
在PHP 專案中實作跨域請求(CORS)需要設定回應頭,透過設定Access-Control-Allow-Origin,Access-Control-Allow-Headers,Access- Control-Allow-Methods以及Access-Control-Allow-Credentials 等關鍵回應頭,可讓瀏覽器在發送請求時允許跨網域請求。
以上是php專案怎麼設定跨域的詳細內容。更多資訊請關注PHP中文網其他相關文章!