跨域請求

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   使用   java   ar   

XMLHttpRequest cannot loadhttp://localhost/MongoTest/person.php. Origin http://localhost:81 is not allowed by Access-Control-Allow-Origin.

 同源策略導致的跨域請求被拒絕

解決方案:

1.利用<script>標籤

 瀏覽器會阻止ajax請求非同源的內容,但沒有限制<script>標籤來訪問非同源的內容,也沒有限制使用動態添加<script>標籤,所以可以採用這種方式打破這種限制。

<script type="text/javascript" src="http://localhost:80/MongoTest/person.php" ></script>

動態添加:即建立一個script標籤,並且為src賦值,然後通過DOM操作添加到HTML文檔中

2.JSONP

JSONP(JSON with Padding)就是伺服器端和用戶端互相協作以完成跨域請求的一種協議,用戶端向伺服器端發送請求並附帶callback函數,伺服器端返回相應的js代碼,這個代碼就是執行回呼函數,參數就是伺服器端返回的JSON資料。用戶端在發起跨域請求時,需要制定具體的回呼函數,比如這個請求http://localhost:80/MongoTest/person.php?callback=sayHello,callback就是回呼函數,伺服器端也要通過callback要提取回呼函數名,所以具體的這個參數需要用戶端和伺服器端達成一致,否則不能實現跨域。用jquery實現jsonp
$.ajax({    type : "get",    async:false,    url : "http://www.xxx.com/ajax.do",    dataType : "jsonp",    jsonp: "callbackparam",//服務端用於接收callback調用的function名的參數    jsonpCallback:"success_jsonpCallback",//callback的function名稱    success : function(json){        alert(json);        alert(json[0].name);    },    error:function(){        alert(‘fail‘);    }});
public void ProcessRequest (HttpContext context) {    context.Response.ContentType = "text/plain";    String callbackFunName = context.Request["callbackparam"];    context.Response.Write(callbackFunName + "([ { name:\"John\"}])");}

 

 

跨域請求

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.