api - 第三方Cookie-具有/ session 跟踪的跨域API

标签 api session cookies cross-domain

给定一个CORS API,它需要 session cookie来跟踪用户在结帐过程中的移动,因此在多个浏览器中都存在问题,直到用户访问该API所在的网站后,cookie才设置。

例如:

johnny.com uses an CORS JSON API from jacob.com. jacob.com sets a cookie after the first AJAX call is made, but some browsers will not set the cookie for subsequent calls. Therefore the API will not function as expected.



浏览器行为:
  • Chrome似乎可以正常运行,除非使用了“第三方Cookie”
    故意禁用。似乎没有解决方法
    这。
  • 除非最初调用返回了P3P隐私策略 header ,否则
  • IE不允许初始设置cookie。
  • 除非使用黑客,否则Safari不允许初始设置cookie(请参阅:http://measurablewins.gregjxn.com/2014/02/safari-setting-third-party-iframe.html)

  • 非常感谢您对如何解决这些问题有任何见解。

    最佳答案

    不幸的是,似乎没有选择使它在所有浏览器上都能正常工作。

    Safari now restricts Cookie的第三方使用。
    似乎最好是评估替代方案:

  • 设置代理服务器,该服务器会将调用重定向到其他服务(例如,当您单击johnny.com/jacob/abc时,充当检索jacob.com/abc的代理)
  • 在API上使用oauth登录(可能不切实际)
  • 将api移至johnny.com/api/...

  • Paypal还创建了一些基于js的解决方案来尝试解决此类问题:https://medium.com/@bluepnume/introducing-paypals-open-source-cross-domain-javascript-suite-95f991b2731d

    关于api - 第三方Cookie-具有/ session 跟踪的跨域API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46839903/

    相关文章:

    php - Codeigniter:嵌套 View 中的逻辑

    python - 无法用 flask 设置 cookie

    javascript - 处理 Cookie 的最佳方式

    javascript - 谷歌翻译/基本 Javascript 问题

    javascript - YouTube onStateChange事件无法正常运行

    PHP $_SESSION 足以保护网页吗?

    java - 当一个人使用 Java servlet 中的 j_security_check 登录后,如何设置 session 变量(用户 ID 的 int)?

    javascript - 读取不受我们控制的其他网站 cookie

    c# - 在 C# 中将 JSON 数组反序列化为对象

    javascript - $.getJSON() 调用抛出错误