跨域訪問,No ‘Access-Control-Allow-Origin‘ header is present on


在本地用ajax跨域訪問請求時報錯:

 

XMLHttpRequest cannot load http://www.*******.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

 

查了一翻資料,發現原來是新W3C標准中是這樣規定的:

 

最新的W3C標准里是這么實現HTTP跨域請求的, Cross-Origin Resource Sharing

簡單的來說,就是跨域的目標服務器要返回一系列的Headers,通過這些Headers來控制是否同意跨域。這些Headers有:4 Syntax

 

 

 

在 Request 包和 Response 包中都有一些。

其中最敏感的就是 Access-Control-Allow-Origin 這個 Header, 他是W3C標准里用來檢查該跨域請求是否可以被通過。 (Access Control Check)

跨域實現的過程大致如下:

從 http://www.a.com/test.html 發起一個跨域請求,

請求的地址為: http://www.b.com/test.php

如果 服務器B返回一個如下的header

Access-Control-Allow-Origin: http://www.a.com

那么,這個來自 http://www.a.com/test.html 的跨域請求就會被通過。

 

如上所知,總結解決辦法如下:

 

1、如果請求的url是aspx頁面,則需要在aspx頁面中添加代碼:Response.AddHeader("Access-Control-Allow-Origin", "*");

 

2、如果請求的url是PHP頁面,則需要在PHP頁面中添加代碼:header("Access-Control-Allow-Origin: *");

 

3、如果請求的url是靜態的html頁面,則需要在頁面中添加meta標簽代碼:<meta http-equiv="Access-Control-Allow-Origin" content="*" />

 

如果服務器端可以確定是要被哪些域名訪問,最好是能把以上代碼中的“*”代替為具體的域名,這樣做可以相應的增強安全性。


免責聲明!

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



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