2017-12-05 13 views
0

私はDjango Rest FrameworkをDjangoプロジェクトに実装しました.Djangoを使ってWebアプリケーションを維持しながらDjangoをIonic Frameworkアプリケーションのバックエンドとして使用することができました。 oauthツールキットを使用して、OAuth2へのプロセスを進めましたが、今は、ユーザーを認証しトークンを取得するために、イオンフレームワーク側からhttpリクエストを呼び出す方法がわかりません。私は私のブラウザでそれを実行した場合でも、私はcurlコマンドcurl -X POST -d "grant_type=password&username=USERNAME&password=PASSWORD" -u "CLIENT ID:CLIENT SECRET" https://www.example.com/o/token/作品は完全に罰金サーバー側でNo 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access. The response had HTTP status code 500.Django Rest Framework Ionic Frameworkを使ったHTTPポストコールと認証

を取得し、返す

login(username, password, url) { 
    let headers = new Headers() 
    headers.append("Content-Type", "application/x-www-form-urlencoded"); 

    return this.http.post(url, 
     {"username": username, 
     "password": password, 
     }, {headers: headers}) 
     .map(res => res.json()); 
    } 

を:としてこれまでイオン側の私は、httpリクエストを持っていますトークン。ここで、USERNAME、PASSWORD、CLIENT ID、およびCLIENT SECRETはすべてそれぞれの値です。

これが正しい質問であるかどうかはわかりませんが、cURLコマンドをIonicアプリで使用できるものにするにはどうすればよいですか?

これらは私の休息FrameworkとCORS設定されている:

REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': [ 
     'rest_framework.permissions.IsAuthenticated' 
    ], 
    'DEFAULT_AUTHENTICATION_CLASSES': [ 
     'oauth2_provider.contrib.rest_framework.OAuth2Authentication', 
    ] 
} 

CORS_ORIGIN_WHITELIST = [ 
    'localhost:8100', 
] 

CORS_ALLOW_CREDENTIALS = True 
+0

以下をご覧ください:https://github.com/ottoyiu/django-cors-headers –

+0

私は現在インストール済みですが、ホワイトリストには「localhost:8100」が含まれています –

+0

うまくインストールされているミドルウェアに存在する、正しい設定)、わからない。 –

答えて

0

だから、あなたは起源が同じものであるlocalhostまたは127.0.0.1を、された状態でリクエストを送信する場合、ほとんどのブラウザのように、原点を送ることが判明Nullですので、メインのDjangoプロジェクトのsettings.pyファイルにCORS_ORIGIN_ALLOW_ALL = Trueを追加する方が良いでしょう。

ことがあったならば、私はgrant_typeが無効であることについてのエラーを得ていたので、私の要求に私が"grant_type": "password"を追加しなければならなかった、と私はまた<your client id here><>せずにクライアントIDです"client_id": <your client id here>を追加する必要がありました。

また、Postmanはapiの作成に役立ち、cURLコマンドを動作するHTTPリクエストに変換する優れたアプリケーションでもあることがわかりました。

関連する問題