2016-10-31 2 views
1

私は別のドメインでホストされているWebサービスから情報を取得しようとしています。もともと私はajaxしか使用していませんでしたが、セキュリティ上の理由でこれが動作しないことに気付きました。その後、私はこの問題を回避するためにCORSを使用できることを学びました。問題は私がそれを働かせないことです。すべての訴訟?ajaxとCORSを組み合わせてjsonリクエストを別のドメインに送信する方法

のjavascript:CORSと

$.ajax({ 
type: "POST", 
    url: "http://localhost:34887//Login", 
    data: '{"username":"Administrator","password":""}', 
    dataType: "json", 

    success: function(data) { 
     alert(data[1]); 
    }, 
    error: function(data){ 
     alert("fail"); 
    } 
}); 

PHPコード:

header('Access-Control-Allow-Origin: http://localhost:34887/'); 
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); 

エラーが私が取得:

XMLHttpRequestがhttp://localhost:34887/Loginをロードすることはできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:5050'はアクセスできません。応答にはHTTPステータスコード500が付きました。

CORSを使用しないときと同じエラーです。 (CORSのオンライン例は歓迎されている)

+1

サイトAは、サイトBのWebサービスを呼び出す必要があります。サイトBは、サイトAがサービスを呼び出せるように、これらのアクセス制御ヘッダーを設定する必要があります。それはあなたのテストでやっていることですか? –

+0

あなたの 'Access-Control-Allow-Origin'ヘッダには、あなたが**呼び出す**エンドポイントの起点が列挙されています。それは**ページを作成する**発信元を記載する必要があります。 –

+0

私はCORSをまだ理解していません。ウェブサービスからのリクエストがあるWebサービスは、SQL Serverのすべてのデータを投稿できます。ローカルホストからこのデータにアクセスして編集しようとしています:ですから、私はCORSをlocalhostのサイトのPHPに入れます:5050 – sansactions

答えて

2

2台のサーバーがある場合 - Server Aを(それがhttp://localhost:5050なりましょう)とサーバーB(それはhttp://localhost:34887/なりましょう)、あなたはServer Bその後Server AからServer B

Website on Server A ===AjaxRequest==> Server B 

に走るウェブサイトからAJAXを実行しようとしている必要がありますRESP

header('Access-Control-Allow-Origin: Server A'); 

です:

header('Access-Control-Allow-Origin: http://localhost:5050'); 

このコードは、要求を受け入れるようにServer B内で実行する必要があり、その中にServer Aの値でAccess-Control-Allow-Originヘッダを使用してServer A上で動作するWebサイトからの要求にオンセServer Aから。

+0

@ T.J.Crowder、正しい、私はより良い用語で答えを更新します:) – Dekel

+0

@ T.J.Crowderは、現在の説明が良いかどうかを教えてください。ありがとう! – Dekel

+0

私は、私がサイトA(localhost:5050)にヘッダを入れたと思っています。 – sansactions

0

それは次のようになりますので、アクセス制御 - 許可 - 原点に*を追加することができます。

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); 
+0

もし彼らが全世界に広く開かれたいのであれば。彼らが欲しいと思っても(質問には何の示唆もありません)、あなたがそれを提案すれば、それをフラグすることは本当に重要です。 –

関連する問題