2016-10-07 6 views
0

私のAPI(Laravel frameworkにあります)をangularから呼び出しようとしています。 "XMLHttpRequestはhttp://localhost:8000/inquiryをロードできません。プリフライト要求に対する応答がアクセス制御チェックを通過しません:要求されたリソースに 'Access-Control-Allow-Origin'ヘッダーが存在しません。 'http://localhost'は許可されていませんアクセス。"いいえ 'Access-Control-Allow-Origin.Origin' null 'はアクセスが許可されていません。ヘッダーが要求されたリソースエラーに存在する

これは

var app = angular.module('inquiryForm', []); 

app.controller('mainCtrl', function($scope, $http) { 
    $scope.user = {}; 

    // calling our submit function. 
    $scope.submitForm = function() { 
    alert(JSON.stringify($scope.user)); 
    var data=JSON.stringify("sameer"); 
    // Posting data to php file 
    $http({ 
     method : 'POST', 
     url  : 'http://**.**.**.**/inquiry', 
     data : $scope.user, 
     headers : {'Content-Type': 'application/JSON'} 
    }).success(function(data) { 
     alert(JSON.stringify(data)); 
    }); 
    }  
}); 

私の角度コードであるActully私はlaravelであるつのルートに呼び出しています(のIPアドレスを考慮する。。上記のURLで

と私のlaravelルートは: Route :: post( 'inquiry'、 'inquiryController @ store');

これはinquiryController、コントローラ {パブリック関数ストア(要求$要求)を拡張するコントローラ

クラス {$データ= $ requst->すべての()です。 リターンレスポンス() - > json($ data); } }

+1

はどのようにあなたのアプリケーションを実行していますか? –

+0

um、Actully私はそれをChromeで実行しています – sam

+0

Webサーバーでindex.htmlを実行していない、またはWebブラウザで直接開きませんか? –

答えて

0

このエラーは通常、Javaスクリプトコードが別のドメインまたはプロセスでホストされているhttp要求を送信しようとしたときに発生します。ブラウザはセキュリティ機能の一部としてCross Origin要求を許可しません。したがって、WebサービスのバックエンドでCORS(Cross-Origin Resource Sharing)を有効にする必要があります。下のリンクを参照して試してみてください。

https://github.com/barryvdh/laravel-cors

+0

私はリノイを試しましたが、それは私のためには役に立たなかった – sam

+0

どのようにフロントエンドとバックエンドのアプリケーションをホストしていますか?両方のアプリケーションを単一のホスティング・サーバーでホストできますか? – rinoy

+0

はい、フロントエンドとバックエンドは同じサーバーにありますが、フロントエンドは80ポートで動作し、バックエンドは8080ポートで動作します – sam

0
app.controller('mainCtrl', function($scope, $http) { 
    $scope.user = {}; 
    $scope.submitForm = function() { 
     var settings = { 
      "async": true, 
      "crossDomain": true, 
      "url": 'http://**.**.**.**/inquiry', 
      "method": "POST", 
      "headers": { 
      "content-type": "application/x-www-form-urlencoded", 
      }, 
      "data": $.param($scope.user) // angular may throw error bcz of $.param() method, then u have to use noConflict method and avoid $ symbol 
              //Example: var jq = $.noConflict(); and use jq.param($scope.user) 
     } 
     $http(settings).success(function(data) { 
      console.log(data.data); 
     }); 
    } 
}); 

or 

app.controller('mainCtrl', function($scope, $http) { 
    $scope.user = {}; 
    $scope.submitForm = function() { 
     var settings = { 
      "async": true, 
      "crossDomain": true, 
      "url": 'http://**.**.**.**/inquiry', 
      "method": "POST", 
      "headers": { 
      "content-type": "application/x-www-form-urlencoded", 
      }, 
      "data": $.param($scope.user) // angular may throw error bcz of $.param() method, then u have to use noConflict method and avoid $ symbol 
     } 
     /* http callback method*/ 
     $http(settings)then(function successCallback(data) { 
         console.log(data.data); 
        }, function errorCallback(err){ 
         console.log(err); 
     }); 
    } 
}); 

今、これは動作するはずです....

+0

まだエラーは同じです。 – sam

+0

私は1つのことをしました、私は1つのクロムエクステンション "cors"を追加し、それが有効に実行されるとき、POSTリクエストの問題だけを考えると、jquery AJAXコールを行い、それを確認しようとします。 –

+0

このエクステンションは、「アクセス制御許可メソッド:POST、GET、OPTIONS、PUT、DELETE」の2つのヘッダーを追加します。 と「アクセス制御許可元:*」このように、このヘッダーを角度コントローラー? – sam

関連する問題

 関連する問題