I am using angularJs with webapi and now i want to upload a file on dropbox after login in my webproject on click of a upload button.I have made an api to go the login page of dropbox and after login i want to redirect it to my own page again by redirect url.But when i am calling the webapi its giving the correct url but not redirection to the DropBox page and showing XMLHttpRequest cannot load http://localhost:3371/api/accounts/ConnectDropDown. The request was redirected to 'https://www.dropbox.com/1/oauth2/authorize?response_type=code&client_id=m5e…2F%2Flocalhost%3A3371%2FHome%2FAuth&state=f50e71f99dc54e0da547d85ffbbd4764', which is disallowed for cross-origin requests that require preflight. in the console of the browser.
<SPAN class="typ">AngularJs</SPAN><SPAN class="pun">:</SPAN>
<SPAN class="kwd">var</SPAN><SPAN class="pln"> _connectDropbox </SPAN><SPAN class="pun">=</SPAN> <SPAN class="kwd">function</SPAN> <SPAN class="pun">()</SPAN> <SPAN class="pun">{</SPAN><SPAN class="pln">
$http</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">defaults</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">useXDomain </SPAN><SPAN class="pun">=</SPAN> <SPAN class="kwd">true</SPAN><SPAN class="pun">;</SPAN>
<SPAN class="kwd">delete</SPAN><SPAN class="pln"> $http</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">defaults</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">headers</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">common</SPAN><SPAN class="pun">[</SPAN><SPAN class="str">'X-Requested-With'</SPAN><SPAN class="pun">];</SPAN>
<SPAN class="kwd">return</SPAN><SPAN class="pln"> $http</SPAN><SPAN class="pun">.</SPAN><SPAN class="kwd">get</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">serviceBase </SPAN><SPAN class="pun">+</SPAN> <SPAN class="str">'api/accounts/ConnectDropDown'</SPAN><SPAN class="pun">).</SPAN><SPAN class="kwd">then</SPAN><SPAN class="pun">(</SPAN><SPAN class="kwd">function</SPAN> <SPAN class="pun">(</SPAN><SPAN class="pln">results</SPAN><SPAN class="pun">)</SPAN> <SPAN class="pun">{</SPAN>
<SPAN class="kwd">return</SPAN><SPAN class="pln"> results</SPAN><SPAN class="pun">;</SPAN>
<SPAN class="pun">});</SPAN>
<SPAN class="pun">};<BR /><BR /><BR /></SPAN>
<SPAN class="pun">[</SPAN><SPAN class="typ">Route</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"ConnectDropDown"</SPAN><SPAN class="pun">)]</SPAN>
<SPAN class="kwd">public</SPAN><SPAN class="pln"> async </SPAN><SPAN class="typ">Task</SPAN><SPAN class="pun"><</SPAN><SPAN class="typ">HttpResponseMessage</SPAN><SPAN class="pun">></SPAN> <SPAN class="typ">ConnectDropDown</SPAN><SPAN class="pun">()</SPAN>
<SPAN class="pun">{</SPAN>
<SPAN class="kwd">var</SPAN><SPAN class="pln"> username </SPAN><SPAN class="pun">=</SPAN> <SPAN class="typ">User</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">Identity</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">Name</SPAN><SPAN class="pun">;</SPAN>
<SPAN class="kwd">var</SPAN><SPAN class="pln"> user </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> await </SPAN><SPAN class="kwd">this</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">AppUserManager</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">FindByNameAsync</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">username</SPAN><SPAN class="pun">);</SPAN>
<SPAN class="kwd">var</SPAN><SPAN class="pln"> appKey </SPAN><SPAN class="pun">=</SPAN> <SPAN class="typ">ConfigurationManager</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">AppSettings</SPAN><SPAN class="pun">[</SPAN><SPAN class="str">"DropboxAppKey"</SPAN><SPAN class="pun">];</SPAN>
<SPAN class="kwd">var</SPAN><SPAN class="pln"> appSecret </SPAN><SPAN class="pun">=</SPAN> <SPAN class="typ">ConfigurationManager</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">AppSettings</SPAN><SPAN class="pun">[</SPAN><SPAN class="str">"DropboxAppSecret"</SPAN><SPAN class="pun">];</SPAN>
<SPAN class="kwd">var</SPAN> <SPAN class="typ">ConnectState</SPAN> <SPAN class="pun">=</SPAN> <SPAN class="typ">Guid</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">NewGuid</SPAN><SPAN class="pun">().</SPAN><SPAN class="typ">ToString</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"N"</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln">
user</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">ConnectState</SPAN> <SPAN class="pun">=</SPAN> <SPAN class="typ">ConnectState</SPAN><SPAN class="pun">;</SPAN>
<SPAN class="typ">IdentityResult</SPAN><SPAN class="pln"> addUserResult </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> await </SPAN><SPAN class="kwd">this</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">AppUserManager</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">UpdateAsync</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">user</SPAN><SPAN class="pun">);</SPAN>
<SPAN class="kwd">var</SPAN><SPAN class="pln"> redirect </SPAN><SPAN class="pun">=</SPAN> <SPAN class="typ">DropboxOAuth2Helper</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">GetAuthorizeUri</SPAN><SPAN class="pun">(</SPAN><SPAN class="typ">OAuthResponseType</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">Code</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> appKey</SPAN><SPAN class="pun">,</SPAN><SPAN class="typ">RedirectUri</SPAN><SPAN class="pun">,</SPAN><SPAN class="typ">ConnectState</SPAN><SPAN class="pun">);</SPAN>
<SPAN class="kwd">var</SPAN><SPAN class="pln"> response </SPAN><SPAN class="pun">=</SPAN> <SPAN class="typ">Request</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">CreateResponse</SPAN><SPAN class="pun">(</SPAN><SPAN class="typ">HttpStatusCode</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">Moved</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln">
response</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">Headers</SPAN><SPAN class="pun">.</SPAN><SPAN class="typ">Location</SPAN> <SPAN class="pun">=</SPAN><SPAN class="pln"> redirect</SPAN><SPAN class="pun">;</SPAN>
<SPAN class="kwd">return</SPAN><SPAN class="pln"> response</SPAN><SPAN class="pun">;</SPAN>
<SPAN class="pun">}</SPAN>