跨域会话,API和iframe

时间:2017-02-01 10:10:17

标签: php rest api session iframe

我目前正在构建一个API,需要用户名和密码才能工作(显然)。我希望通过两种方式使用此API:

  1. 使用标头授权用户(正常工作)的REST服务器 - 服务器调用的“正常”方式
  2. 或通过使用iframe的“第三方”。
  3. 使用第二种方法我遇到了一些麻烦。进一步解释实施如下:

    1. “运营商”有一个名为https://example1.com的域名,在此域名中,运营商希望整合调用上述API的iframe
    2. https://example1.com上我添加了以下代码

      if (session_status() == PHP_SESSION_NONE) {
          session_start();
      }
      
      $_SESSION['u'] = 'username_here';
      $_SESSION['p'] = 'password_here';
      
    3. 运营商在iframe网址中包含<?=session_id();?>,例如src="https://iframe.example1.com/?sid=<?=session_id();?>"

    4. 如果iframe和运营商网站在同一台服务器上,这可以正常工作(显然),因为会话存储可以从双方读取,然后它将显示为:$_SESSION['u'];和{{1 },使用给定的用户名和密码调用API并检索所需的信息。

    5. 如果iframe保留在https://example2.com(不同的服务器)上,则会话数据无法读取

    6. 有哪些安全方法可以传递用户名和密码,同时尽可能保持API的RESTful状态?

      提前谢谢

1 个答案:

答案 0 :(得分:0)

我不知道这是否符合您的需求:您可以尝试从“运营商”域(使用正确的标头)向您的API发出ajax请求,然后渲染,而不是从iframe调用您的API将结果导入iframe。

灵感来自:How to set custom http headers when changing iframe src?