No 'Access-Control-Allow-Origin' Ajax跨域訪問解決方案

來源:互聯網
上載者:User

標籤:使用   ip)   之間   header   response   遠程   ros   requested   預設   

No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.

當使用ajax訪問遠程伺服器時,請求失敗,瀏覽器報如上錯誤。這是出於安全的考慮,預設禁止跨域訪問導致的。

一、什麼是跨域訪問

舉個栗子:在A網站中,我們希望使用Ajax來獲得B網站中的特定內容。如果A網站與B網站不在同一個域中,那麼就出現了跨域訪問問題。你可以理解為兩個網域名稱之間不能跨過網域名稱來發送請求或者請求資料,否則就是不安全的。跨域訪問違反了同源策略,同源策略的詳細資料可以點擊如下連結:Same-origin_policy;
總而言之,同源策略規定,瀏覽器的ajax只能訪問跟它的HTML頁面同源(相同網域名稱或IP)的資源。

二、解決方案

常用的解決方案有兩種,可以分為用戶端解決方案和伺服器端解決方案。先說伺服器端解決方案:

伺服器端解決方案
在伺服器端的filter或者servlet裡面添加
response.setHeader("Access-Control-Allow-Origin", "*");
“Access-Control-Allow-Origin”表示允許跨域訪問,“*”表示允許所有來源進行跨域訪問,這裡也可以替換為特定的網域名稱或ip。
很顯然,這種方式對非網站擁有人員來說是不能做到的。而且此種方式很容易受到CSRF攻擊。

用戶端解決方案

$(function($){
var url = ‘http://*****/index‘;
$.ajax(url, {
data: {
‘cityname‘: ‘成都‘,
‘date‘: ‘2016.12.12‘
},
dataType: ‘jsonp‘,
crossDomain: true,
success: function(data) {
if(data && data.resultcode == ‘200‘){
console.log(data.result.today);
}
}
});

將ajax請求中的dataType屬性設定為“jsonp”,jsonp是專門用來解決跨域訪問而誕生的。

No 'Access-Control-Allow-Origin' Ajax跨域訪問解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.