【发布时间】: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
我正在网站上使用 CORS。
代码示例:
header("Access-Control-Allow-Origin: *");
session_start();
$session_id = session_id();
这段代码运行良好,但每次都会返回一个新的会话 ID。
在这种情况下如何维护会话数据?
【问题讨论】:
标签: php http-headers cors session-cookies
虽然您允许使用 Access-Control-Allow-Origin 标头从外部域进行访问,但会话本身是基于 cookie 的。
如果发出请求的脚本是从外部域传递的,它将无法读取 cookie 并将其传递给您的服务器。
解决方案:交付从与 AJAX 服务相同的上下文(即相同的协议/域/端口)进行调用的 JS。还要确保 cookie 本身不限于不同的子域或路径。
不要尝试通过 POST 或 GET 请求传递会话标识符,这将使您的应用程序容易受到 CSRF 的攻击。
顺便说一句,将允许的来源设置为* 也是不鼓励的,因为它也可以用于 XSS/CSRF,与其他技术结合使用。请限制对第三方域的请求。
最后但同样重要的是,您可能还想通过 HTTP OPTIONS 查看预检请求的主题。
【讨论】: