gpt4 book ai didi

php - 使用 AngularJS 和 PHP 创建跨子域 cookie/session

转载 作者:可可西里 更新时间:2023-11-01 00:09:24 24 4
gpt4 key购买 nike

我的应用程序具有以下结构:app. 子域上有前端 js 应用程序( Angular ),根和 api. 上有后端 (PHP) > 子域。我的登录是通过存储 session cookie 的根目录完成的。该 cookie 存储在路径为“/”的所有子域中。

我可以直接在 api 上获取 cookie。然而,在相同的 url 上,但通过来自前端的 ajax GET 调用,cookie 为 NULL。

但是使用像 Postman(chrome 应用程序)这样的应用程序向相同的 URL 发出 GET 请求,我可以获得 cookie。所以它似乎特定于我的应用程序前端。

这是我的 Angular 应用程序的设置。我在我的应用程序配置中设置了这些默认值:

$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

我已经在 Chrome 和 FF 上进行了测试。无法弄清楚为什么我的 cookie/session 在我的前端和后端之间不可用

2013 年 11 月更新

我在使用的 Angular 版本方面也遇到了问题。因为我使用的是 $resource 而不是 $http,所以那个版本的 Angular 在使用时没有将 withCredentials 设置附加到 http 请求$资源。更新到最新的 angularjs 版本解决了我的问题。因为没有设置 withCredentials,所以我的 cookie 没有与 xhr 请求一起发送。愚蠢的是,我没有检查是否正在发送 cookie。

最佳答案

withCredentials 属性不足以让它工作。服务器响应必须具有 Access-Control-Allow-Credentials: true header 。

您还应该检查 Access-Control-Request-HeadersAccess-Control-Allow-Headers,以及其他 Access-Control-。 .. 请求和响应中的 header ,并确保服务器正确处理 OPTIONS 方法请求和所有 CORS header 。

另请参阅: http://www.html5rocks.com/en/tutorials/cors/

关于php - 使用 AngularJS 和 PHP 创建跨子域 cookie/session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19772401/

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