gpt4 book ai didi

cors - 启用 CORS 的 Web Api 2 facebook 身份验证

转载 作者:行者123 更新时间:2023-12-04 15:22:36 27 4
gpt4 key购买 nike

我正在尝试使用 Angular JS 为我的前端实现内置外部身份验证的 Web Api 2。我使用以下行启用了 owin cors:

app.UseCors(CorsOptions.AllowAll);

我成功地加载了外部登录,就像他们在 SPA 模板中使用这个 api 调用一样 - api/Account/ExternalLogins?returnUrl=%2F&generateState=true

当用户单击调用此 api 的按钮时,我使用响应中的 URL

htp://localhost:31683/api/Account/ExternalLogin?>provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A>31683%2F&state=EqHaUDzzuXZcVSk7IC_gWkgF5P_TNTdIHn1Tqbv18CM1



正如预期的那样,User.Identity.IsAuthenticated 尚未通过身份验证,因此它返回 ChallengeResults(与 SPA 模板完全一样),它应该将用户重定向到 facebook 登录页面。这就是我的问题所在。 Fiddler 中的响应看起来不错,它具有重定向到 facebook 登录页面的位置响应 header 。但是,当它尝试进行重定向时,我收到以下 CORS 错误:

请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问 Origin 'null'。

enter image description here

看起来好像我对 facebook 登录的重定向请求有一个带有空值的 Origin header 。我相信这个 Origin header 就是为什么它寻找 facebook 没有提供的 AllowCors 响应。我不确定为什么 Origin header 在重定向请求中,或者这是否就是问题所在。

下面是 chrome 响应对我的 api/Account/ExternalLogin api 的 api 调用然后重定向调用的屏幕截图。

我的 ExternalLogin 响应:
enter image description here

Facebook 重定向响应。这就是我认为的问题所在。请注意请求中的原始标题
enter image description here

任何帮助将不胜感激。我已经为此投入了很多时间。谢谢。

最佳答案

这不完全是您问题的答案,但是,我认为这可能会对您有所帮助。

我在尝试这样做时遇到了类似(或相同)的问题,但使用的是 ASP.NET MVC 5。

当不使用 CORS 时,您描述的过程就像一个魅力。我也在用。这很棒!有用。当使用 CORS 时,问题就开始了。

经过 2 天的痛苦和折磨,我从 W3C 找到了关于 CORS 的规范。 .阅读后,我的结论是不幸的是,这很简单,不可能做到这一点。看看section 6.2section 7.1 .

我的解决方案

在此特定操作中,我使用的是 JSONP。无需服务器端修改,无需额外代码,不再痛苦!我只需要更改一点我的角度代码。

对此

$http.jsonp('http://localhost:56278/register/appregister?provider=Facebook&?callback=JSON_CALLBACK');

由此
$http({ url: 'http://localhost:56278/register/appregister', method: 'GET', params: { provider: provider } });

预期响应
enter image description here

关于cors - 启用 CORS 的 Web Api 2 facebook 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23171448/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com