2016-04-11 22 views
0

私はこのような角度で要求を作るしようとしている:AngularJsいいえ「アクセス制御 - 許可 - 起源」

(function() { 
    'use strict'; 

    angular.module('app') 
     .service('requestService',requestService); 

    function requestService($http) { 
     this.post = function(url, data) { 
      return $http({ 
       'method': 'POST', 
       'url': url, 
       'data': $.param(
        data 
       ) 
      }); 
     } 
    } 
})(); 

私は私のコンソールにエラーメッセージが表示されます。

XMLHttpRequest cannot load http://lsupport.dev/api/v1/login. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. 

マイhttp://localhost:3000はGulpでビルドされています。私はすでにウェブ上で多くを検索しましたが、私は解決策を見つけることができません。

+1

ブラウザのURLは何ですか?あなたは同じドメインにいる必要があります(あなたの場合はlocalhost:3000)。あなたがサーバーの応答にヘッダーAccess-Control-Allow-Originを追加する必要がない場合 – JavierFromMadrid

+0

これに答えるためにまず知りたいことは、サードパーティのURLがCORSをまったくサポートしているかどうかです。それは基本的なcors要求、すなわちプリフライトを必要としない要求だけをサポートしているかもしれません。その場合、contentTypeをデフォルト値に戻すだけで済みます。もしそれが全くcorsをサポートしておらず、JSONPをサポートしていないなら(これはPOSTリクエストであるべきではないので)、このリクエストをangleで行うことは期待できません。 –

答えて

-1

クロスドメイン要求をしています。

つまり、要求を出しているサーバーのドメイン名が、要求しているサーバーのドメイン名と同じではありません。

「リスク」があるため、要求を行うサーバーはAccess-Control-Allow-Originヘッダーを設定する必要があります。あなたはあなたが使うべきものをGoogleにすることができます。これにより、任意のドメイン(またはドメインのホワイトリスト)からこのサーバーにHTTP要求を行うことができます。

また、クロスオリジンPOSTおよびPUTリクエストを作成する場合は、まず、クライアントからプレフライトOPTIONSリクエストが行われます。

このOPTIONS要求には、Access-Control-Allow-Originヘッダーが正しいかどうかを判断する1つの目的があります。そうであればPOSTリクエストを行います。そうでない場合、失敗します。これは、許可されていないときにデータのロードをポストする時間を節約するためです。

ブラウザの開発者コンソールで[NET]タブを確認すると、このOPTIONSリクエストが行われていることがわかります。

+0

あなたの投稿に挨拶、感謝、署名、タグライン、または顔文字を使用しないでください。これらは、スタックオーバーフローのノイズとみなされます。スタックオーバーフローは、回答を求める、または回答を提供するために必要なものを投稿に追加しません。あなたのスタックオーバーフロー貢献の*参考品質の書き込み*のために努力する必要があります。 – meagar

0

CORSをサーバー(リモート)で有効にすると、コードが異なるドメインの要求を実行できるようにする必要があります。

CORS-Wikipedia

+0

"the"サーバーではもちろん、サードパーティ製のサーバー、つまりhttp:// lsupport.dev/api/v1/login'を意味し、ローカルサーバーは意味しません。もちろん –

+0

!以来、別のドメインです。 – thegio

+0

この問題を抱える人々の多くは、自分のサーバーにこのヘッダーを追加する必要があると想定しているため、明確にしたかっただけです。 –

0

あなたはそれを有効にする必要があり、あなたがサーバーの要求または所有者を作っているサーバへのアクセスを必要とする必要があります。

次の記事を詳細に確認してください。

Header set Access-Control-Allow-Origin in .htaccess doesn't work

Access-Control-Allow-Origin Multiple Origin Domains?

ホームステッドは、手順に従ってくださいnginxのサーバーです。それを解決する。

Handling CORS with Nginx

アクセス制御起源別の構成は、Apache、nginxのようなサーバーの種類に基づいてあり、特定の要求に応答するAngularJS、それサーバー側の問題をどうするは何もありません。

+0

これらの投稿はどちらもこの問題を解決しません。 –

+0

こちらをご覧ください。私が理解できるように。 1)localhostからhttp://lsupport.dev/api/v1/loginへのリクエストを作成する 2)lsupport.devにアクセスできますか? lsupport.devの .htacessファイルをサーバーに追加する必要があります。 **有効なリクエストに対するサーバーの応答のみが、クロスサイトの発信元を有効にします** – codeCraft

+0

はいホームステッドのワグラーを使用してアクセスしました – Jamie