2016-10-22 16 views
0

こんにちは皆、私はこのことについて3日間から戦い、解決策を探しています。私はsharethis.com RESTapiからデータを取得する際に問題があります。私はjQueryとLaravel 5.2で作業しています。私はこのjsonから値を取得したい:http://rest.sharethis.com/v1/count/urlinfo?url=http://www.sharethis.comしかし、私は非常に多くの方法と機能を試して欲求不満。実際のコードは次のとおりです。Ajax Jquery CORSが動作しません

function setHeader(xhr) { 
xhr.setRequestHeader('Access-Control-Allow-Origin', '*'); 
xhr.setRequestHeader('Access-Control-Allow-Headers', 'Content-Type'); 
xhr.setRequestHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS"); 
} 
$.ajax({ 
url: 'http://rest.sharethis.com/v1/count/urlinfo?url=http://www.sharethis.com', 
type: 'GET', 
beforeSend: setHeader, 
contentType: 'application/json; charset=utf-8', 
success: function() { alert("Success"); }, 
error: function() { alert('Failed!'); } 
}); 

このリクエストは常に「失敗!」を返します。私はCORSが何を意味するのか少し理解していますが、実際にはそれを動作させることはできません。何か案は?おかげで..

+0

について、支援を期待かどうかをチェックする機能がありますCORS "* ...明らかにあなたはそうではありません、それらのヘッダーは要求で設定することはできません、彼らはサーバ側に設定する必要があります – charlietfl

+0

こんにちは@charlietfl私は私のPHPファイルの最初の行にこれを入れます:アクセス-Control-Allow-Origin:* '); ?>しかし、何も変わっていない...どんな考え? – Francisco

+0

@Franciscoこの1つのヘッダーでは不十分です。 'Allow-Headers'と' Allow-methods'も必要です。 –

答えて

1

たぶん、あなたが実際にCORSを理解していない:)

をこれらのヘッダーは、応答ではなく、要求に存在しなければなりません。

サーバーがそれらを提供する必要があります。

サーバが同意する必要があります。

ご提供いただいたURLにCORSヘッダーが含まれていないため、バックエンドを変更しない限り、AJAX経由でフェッチできません。

0

実行データに

var url = "http://rest.sharethis.com/v1/count/urlinfo?url=http://www.sharethis.com"; 

var xhr = createCORSRequest('GET', url); 

xhr.setRequestHeader(

'X-Custom-Header', 'value'); 

xhr.withCredentials = true; 

xhr.onload = function() { 

      if (this.status === 200) { 

       console.log(xhr); 
      } 

}; 

xhr.send(); 

を得るためにXMLHttpRequestを使用してこのコードとURLのサポートCORS

function createCORSRequest(method, url) 
{ 

var xhr = new XMLHttpRequest(); 

if ("withCredentials" in xhr) { 
    // XHR for Chrome/Firefox/Opera/Safari. 
    xhr.open(method, url, true); 

    console.log("for chrome/fir"); 
} else if (typeof XDomainRequest != "undefined") { 
    // XDomainRequest for IE. 
    xhr = new XDomainRequest(); 
    xhr.open(method, url); 

    console.log("ie"); 
} else { 
    // CORS not supported. 
    xhr = null; 
    console.log("not supported"); 
} 
return xhr; 
} 

は、私は理解して「*それは

+0

こんにちは、ありがとう、ありがとう、コンソールはまだ言っています:XMLHttpRequestは、http://rest.sharethis.com/v1/count/urlinfo?url=http://www.sharethis.comを読み込むことができません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。したがって、 'http:// localhost'はアクセスが許可されていません。 – Francisco

関連する問題