2016-07-06 6 views
5

イム角度使ってイオンをURLにポストを送信しようとしているが、私は応答を持っている:プリフライトリクエストにイオン性のHTTP POST

応答は、アクセス制御チェックに合格しない:いいえ「のアクセスを-Control-Allow-Origin 'ヘッダーは、要求されたリソース上に存在します。 Origin 'http://localhost:8100'はアクセスできません。応答は、私は、AJAXでそれをテストし、すべてが完璧に動作しますので、私はAngularJS(イオン)で使用されるコードの下

...、外部サービスが動作していることを知っているHTTPステータスコード404

を持っていたし、アヤックス:

イオン:

var loginServiceUrl = 'http://url.com.br'; //It is not the real one 
var loginServiceData = { 
    email: [email protected] 
    senha: 1234 
}; 
$http.post(loginServiceUrl, loginServiceData). 
then(function (res){ 
    console.log(res); 
}); 

アヤックス:

$.ajax({ 
    type: "POST", 
    url : 'http://url.com.br', //It is not the real one 
    data : {email: '[email protected]', senha: '1234'}, 
    success: function(result) { 
     $('html').text(JSON.stringify(result)); 
    } 
}); 

誰も私のlocalhost上のajaxを介してポストを取得し、イオン、またlocalhostではない知っていますか?

+0

あなたは答えを見つけましたか? – ariestikto

+0

クロムの拡張子:「Allow-Control-Allow-Origin:*」、https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi – Beto

+0

クール、ありがとうございます! – ariestikto

答えて

1

これをチェックしてください。 >あなたのような問題を処理する方法をよく説明しています - >http://blog.ionic.io/handling-cors-issues-in-ionic/

+0

私はそれを試みましたが、AngularJsについての私の知識は、私が工場を使って欲しいものをやらないようにしました... = /プロキシint ionic.project dosent workを使用しています – Beto

1

POSTリクエストでヘッダーを追加しようとしてください。 DataToSend

var DataToSend = { 
        userID: deviceID, 
        coordLat : pos.coords.latitude, 
        coordLon: pos.coords.longitude 
    }; 

    $http({ 
      method: 'POST', 
      url: 'http://url.com.br', 
      headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}, 
      data: DataToSend 
     }) 
+0

同じエラー... = T – Beto

0

CORSの

//例では、あなたのフロントエンドとは何の関係もありません。

POST要求を送信する前に、ブラウザはOPTIONS要求をサーバーに送信して、ドメインからの呼び出しが許可されているかどうかを確認します。

あなたのサーバーはOPTIONSを処理していないことを意味ステータス404を、取得している、ので、(POSTと同じ)OPTIONS要求

を許可

1を要求する今」すなわち第二部に来て(ブラウザがOPTIONS要求の応答をチェックします今OPTIONS要求のレスポンスヘッダを設定し、OPTIONS要求を許可した後いいえ「アクセス制御 - 許可 - 起源」」

:プリフライトリクエストに対する応答は、アクセス制御チェックを通過しませんPOST要求を処理するのは、i OPTIONS応答内に存在する「Access-Control-Allow-Origin」。 OPTIONSの応答ヘッダを設定

2.

response().setHeader("Access-Control-Allow-Origin", "*"); 
response().setHeader("Allow", "*"); 
response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS"); 
response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent"); 

例を要求します..

ルータ(Javaでは)

OPTIONS /*all       
controllers.Application.preflight(all) 

コントローラ機能:これはあなたの問題を解決します

public static Result preflight(String all) { 
     response().setHeader("Access-Control-Allow-Origin", "*"); 
     response().setHeader("Allow", "*"); 
     response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS"); 
     response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent, Auth-Token"); 
     return ok(); 
    } 

希望。

乾杯