2016-11-14 3 views
0

私はsalesforce.com APIといくつかの統合を行っていますが、私はロードブロッキングを打ちました。 SalesforceのAPIにsubsequestリクエストをする https://login.salesforce.com/services/oauth2/token?&client_id=XXX-XXX&client_secret=YYYYYY&grant_type=password&password=BLAHBLAHP&[email protected] 2.このトークン:私は 1 Postに認証トークン EGを取得するためのユーザー名/パスワードが必要なjavascriptの一部を使用してSalesforce.com REST認証CORSの問題

上記のリクエストを行うと、ブラウザのセキュリティが無効になっているか、応答されたヘッダーに「Access-Control-Allow-Origin」の値を追加するアドオンがある限り正常に動作します。この場合、私はSalesforceから有効な応答を返します。

ドメインからこれを試してみると、CORSエラーが発生するという問題があります。 要求されたリソースに 'Access-Control-Allow-Origin'ヘッダーがありません。したがって、Originのhttps:// {{myip}} 'はアクセスが許可されていません。

ここで、なぜこの制限がブラウザによって強制されるのか理解していますが、Salesforce APIにはホワイトリストに登録されたドメインを追加するオプションがあります。私はこれが私にこの仕事をさせてくれると思ったでしょうが、そうではありません。ドメインをホワイトリストに追加したにもかかわらず、ブラウザのコンソール(chrome)にabveエラーが表示されると、認証要求が返されます。

私の質問は次のとおりです。私のホワイトリスト作成は私のシナリオではうまくいくと思うのは嫌ですか? Salesforceアプリの設定が欠けていますか?これを行うには、別の認証方法に従わなければなりませんか?

ガイダンスをいただければ幸いです。

答えて

1

Salesforce REST APIは、まだすべての要求エンドポイントでCORSをサポートしていません。 CORSヘッダーを追加しないエンドポイントを使用している可能性がありますか?その間、あなたはプロキシを使用することができます:https://www.jamesward.com/2014/06/23/cross-origin-resource-sharing-cors-for-salesforce-com

+0

ありがとうJames、私はすでにcorsヘッダーを取り除くプロキシサーバーを実装しました。これはうまく動作しますが、私はこれに依存したくありません。私は私の質問はだと思う:上記の私が経験しているCORSの問題を持っていないログイン方法を使用する方法はありますか? – kSeudo

+1

私はログイン方法がCORSをサポートしているとは思わない。したがって、User-Agent OAuthフローを使用する必要があります:https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_understanding_user_agent_oauth_flow.htmそしてブラウザがあなたにCORSヘッダーのないドメイン間要求の本体を取得します。したがって、ブラウザのJavaScriptからこれを行うには、CORSヘッダーが必要です。 –