有時,在自己的伺服器上用ajax指令碼請求領一伺服器時,會報:
xmlhttprequest cannot load 【ajax請求的伺服器url】 no 'access-control-allow-origin' header is present on the requested resource. origin 【自己伺服器】 is therefore not allowed access.
xmlhttprequest2 進行跨域訪問時需要伺服器許可,不是任何域都接受跨域請求的。先來看一下從 yahoo yql 域返回的響應頭(response header ):
注意裡面有一條標識 access-control-allow-origin:* ,這就表示允許跨域訪問,所以可以正常訪問該域,而對於其他沒有該標識的域就會出現禁止訪問提示。
如果要接受跨域訪問請求,就必須在伺服器端返回的資源中加入 access-control-allow-origin 頭標識, access-control-allow-origin 的值可以是 url 或 *,如果是 url 則只會允許來自該 url 的請求,* 則允許任何域的請求。比如,在 html 中可以設定:
1.在ajax請求的那個伺服器上輸出的頁面上做header的乙個標籤,
*代表所有的伺服器 或 只允許某乙個
2.在ajax請求的那個伺服器上指令碼上設定header請求引數
access-control-allow-origin: *
如,在yii2上
伺服器端PHP允許跨域
解決跨域的關鍵是設定access control allow origin。例如 客戶端的網域名稱是 api.itbsl.com,而請求的網域名稱是www.itbsl.com 如果直接使用ajax訪問,會有以下錯誤 1.允許單個網域名稱訪問 指定某網域名稱跨域訪問,則只需在檔案頭部新增如下 head...
PHP 伺服器端處理跨域問題
起初只在檔案開頭設定了 header access control allow origin 然後報錯 request header field x requested with is not allowed by access control allow headers in preflight ...
PHP 伺服器端處理跨域問題
header access control allow origin header access control allow origin 在實際專案中最好指定能跨域訪問的網域名稱,增加安全性。可以寫在乙個公共類裡面,封裝乙個方法呼叫。設定能訪問的網域名稱 static public origina...