【问题标题】:CORS with php sessionCORS 与 php 会话
【发布时间】:2014-10-22 11:15:58
【问题描述】:

我正在网站上使用 CORS。

代码示例:

header("Access-Control-Allow-Origin: *");
session_start();
$session_id = session_id();

这段代码运行良好,但每次都会返回一个新的会话 ID。

在这种情况下如何维护会话数据?

【问题讨论】:

    标签: php http-headers cors session-cookies


    【解决方案1】:

    虽然您允许使用 Access-Control-Allow-Origin 标头从外部域进行访问,但会话本身是基于 cookie 的。

    如果发出请求的脚本是从外部域传递的,它将无法读取 cookie 并将其传递给您的服务器。

    解决方案:交付从与 AJAX 服务相同的上下文(即相同的协议/域/端口)进行调用的 JS。还要确保 cookie 本身不限于不同的子域或路径。

    不要尝试通过 POST 或 GET 请求传递会话标识符,这将使您的应用程序容易受到 CSRF 的攻击。

    顺便说一句,将允许的来源设置为* 也是不鼓励的,因为它也可以用于 XSS/CSRF,与其他技术结合使用。请限制对第三方域的请求。

    最后但同样重要的是,您可能还想通过 HTTP OPTIONS 查看预检请求的主题。

    【讨论】:

    • 有没有办法告诉客户端和服务器允许他们一起工作,而是将它们设置在同一个域上?
    • @helle 他们可以一起工作,但不能共享 cookie。 Cookie 始终绑定到域。但是,您可以例如使用令牌并将其作为标头发送以模拟 cookie。但请注意不要遇到 XSS 或 CSRF 等安全问题。
    猜你喜欢
    • 2011-01-01
    • 2013-01-06
    • 2012-02-29
    • 1970-01-01
    • 2019-09-22
    • 2014-08-05
    • 2010-11-11
    • 2012-07-07
    • 2012-10-29
    相关资源
    最近更新 更多