2015-11-02 119 views
0

我不知道爲什麼我的AJAX CORS不工作..如何允許跨源數據共享?

AJAX

$(document).ready(function(){ 
     var xhr = new XMLHttpRequest(); 
     $.ajax({ 
      url: "SERVER_URL_AND_PARAMETERS", 
      type:"POST", 
      beforeSend:function(xhr){ 
       xhr.setRequestHeader("Access-Control-Allow-Origin", "*"); 
       xhr.setRequestHeader("Access-Control-Allow-Methods", "GET, POST"); 
      }, 
      dataType:"json", 
      crossDomain: true, 
      success:function(data, textStatus, xhr){ 
       alert(data); 
      }, 
      error:function(xhr,status,error){ 
       alert("code:"+xhr.textStatus+"\n"+"message:"+error.responseText+"\n"+"error:"+error.log); 

      } 

     }); 

    }); 

響應頭

Allow:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS 
    Cache-Control:no-cache="set-cookie, set-cookie2" 
    Connection:Keep-Alive 
    Content-Language:ko-KR 
    Content-Length:0 
    Content-Type:text/plain 
    Date:Mon, 02 Nov 2015 07:19:54 GMT 
    Expires:Thu, 01 Dec 1994 16:00:00 GMT 
    Keep-Alive:timeout=10, max=100 
    Set-Cookie:SOME_COOKIES; Expires=Tue, 01-Nov-16 07:19:53 GMT; Path=/ 
    X-UA-Compatible:IE=EmulateIE8, requiresActiveX=true 

請求頭

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:accept, access-control-allow-headers, access-control-allow-methods, access-control-allow-origin 
Access-Control-Request-Method:POST 
Connection:keep-alive 
Host:SERVER_URL 
Origin:http://CLIENT_URL 
Referer:http://CLIENT_URL/AND/JSP_FILE_PATH.jsp?lineCd=CODE1&prdtCode=CODE2 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 

鉻錯誤詳細

MLHttpRequest cannot load SERVER_URL_AND_PARAMETER Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'CLIENT_URL' is therefore not allowed access. 

我不知道我的代碼有什麼問題。我正在使用CLIENT_URL端Web應用程序。

回答

0

CORS頭文件例如"Access-Control-Allow-Origin"務必由服務器設置,而不是由客戶端設置。這是授予CORS訪問客戶端的服務器,而不是其他方式。你不能從瀏覽器給CORS訪問權限。

MDN section on CORS,這裏有一個描述性的報價:

的跨來源資源共享標準的作品,通過添加新的HTTP 頭,讓服務器來描述一組起源被 允許讀取信息使用網絡瀏覽器。此外, 對於可能導致用戶數據產生副作用的HTTP請求方法(特別是對於 ,對於GET以外的HTTP方法或對於某些MIME類型的 POST使用),規範要求瀏覽器 「預檢」請求通過HTTP OPTIONS請求方法從服務器 請求支持的方法,然後在從服務器「批准」 時,發送實際請求與實際HTTP請求 方法。服務器還可以通知客戶端 (包括Cookie和HTTP驗證數據)是否應該以 請求發送「憑證」。

特別是,請注意「允許服務器描述允許使用Web瀏覽器讀取該信息的原始集合」部分。