未在SPA的浏览器中设置Cookie与API通信

阿利克

我正在设置React SPA(www.mysite.com)和Rails API(api.mysite.com)应用程序。当我使用相同的URL名称时,一切都按预期工作,但是,当URL名称不同时,Web浏览器未设置站点cookie。由于缺少Cookie,CSRF验证当然也会失败。因此,例如,如果SPA App完全可以运行,localhost而Rails API Applocalhost:3000可以正常运行,则问题仅出在我使用预期的DNS名称时。

听起来像是CORS的问题,但现在很多天都找不到了……

这是我的配置:

我正在使用rack-corsRuby宝石的Rails方面

config / initializers / cors.rb

Rails.application.config.middleware.insert_before 0, Rack::Cors do
   allow do
     origins 'localhost’,  'www.mysite.com',

     resource '*',
       headers: :any,
       credentials: true,
       methods: [:get, :post, :put, :patch, :delete, :options, :head]
   end
end

Rails.application.config.action_controller.forgery_protection_origin_check = false

在React端,我的axios配置如下:

src / App.js

axios.defaults.xsrfCookieName = "CSRF-TOKEN";
axios.defaults.xsrfHeaderName = "X-CSRF-Token";
axios.defaults.withCredentials = true;

当React App启动时,它GET向API后端发出请求以获取CSRF令牌供以后使用。同时,浏览器应该设置站点cookie。

    axios
        .get("/sessions/csrf_token", {
          headers: { "Content-Type": "application/json"
          },
        })
        .then(response => {
          // do stuff
          });
        });

在设置和缺少站点cookie的两种情况下,响应标头看起来都相同

在此处输入图片说明

我还可以看到Cookie已发送到浏览器,但在Cookie部分下却丢失了

在此处输入图片说明

非常感谢您对我在这里可能缺少的任何想法!!!谢谢!!

更新:

我还应该提到我的会话配置文件设置为允许子域

config / initializers / session_store.rb

Rails.application.config.session_store :cookie_store, key: '_mysite_session', expire_after: 8.hours, domain: :all, tld_length: 2

Cookies配置可能有其他问题,但我无法弄清楚在哪里查看以及应检查哪些其他设置。

这是当我使用localhostCookie并按预期方式将cookie保留在浏览器中时的Cookie窗格的屏幕截图

在此处输入图片说明

当我使用www.mysite.comapi.mysite.com名称时,右边的窗格只是空白。

七面大理石

我一直在研究,我认为这可能与您所看到的有关:

在子域和域之间共享Cookie

显然,如果您未在set-cookie标头中指定域,则该cookie被视为“仅主机”。因此,您可能必须使它看起来像:

Set-Cookie: name=value; domain=mydomain.com

我确定这对Axios是可行的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未在多个浏览器中设置Django CSRF cookie

来自分类Dev

未在浏览器中设置 Cookie [PHP]

来自分类Dev

未在浏览器上设置C#Cookie

来自分类Dev

Web浏览器未在Ajax调用上设置cookie

来自分类Dev

来自 php 的 Cookie 正在接收但未在浏览器中设置

来自分类Dev

设置浏览器cookie

来自分类Dev

未在MVC 5中使用Owin在浏览器中设置身份验证cookie

来自分类Dev

Django REST和React-JWT Cookie未在浏览器中设置,但与邮递员一起使用

来自分类Dev

Django REST和React-JWT Cookie未在浏览器中设置,但与邮递员一起使用

来自分类Dev

如何在IOS浏览器中设置网站Cookie?

来自分类Dev

如何使用环回在浏览器中设置Cookie?

来自分类Dev

如何在IOS浏览器中设置网站Cookie?

来自分类Dev

在 Python cgi 中设置浏览器 cookie 的问题

来自分类Dev

浏览器未设置cookie

来自分类Dev

未在浏览器中打开Google

来自分类Dev

页面未在浏览器中缓存

来自分类Dev

代码未在浏览器中为 cookie 生成文件

来自分类Dev

Owin Cookie身份验证设置Cookie无法保存在浏览器中

来自分类Dev

浏览器未在选项标签上设置所选属性

来自分类Dev

拒绝在浏览器中设置不安全的标头“ Cookie”错误,但请求成功

来自分类Dev

在Express应用程序中的默认connect.sid浏览器cookie上设置域

来自分类Dev

Laravel 7:为什么没有在浏览器中设置我的会话Cookie?

来自分类Dev

如何在浏览器中检查Cookie设置为httponly

来自分类Dev

浏览器的默认语言设置会影响Cookie中的语言吗?

来自分类Dev

未在“ Web API的响应”中设置Cookie

来自分类Dev

如果设置了域,浏览器将忽略Cookie

来自分类Dev

提取响应未设置浏览器Cookie

来自分类Dev

如果设置了域,浏览器将忽略Cookie

来自分类Dev

关闭浏览器后如何删除或取消设置Cookie?

Related 相关文章

  1. 1

    未在多个浏览器中设置Django CSRF cookie

  2. 2

    未在浏览器中设置 Cookie [PHP]

  3. 3

    未在浏览器上设置C#Cookie

  4. 4

    Web浏览器未在Ajax调用上设置cookie

  5. 5

    来自 php 的 Cookie 正在接收但未在浏览器中设置

  6. 6

    设置浏览器cookie

  7. 7

    未在MVC 5中使用Owin在浏览器中设置身份验证cookie

  8. 8

    Django REST和React-JWT Cookie未在浏览器中设置,但与邮递员一起使用

  9. 9

    Django REST和React-JWT Cookie未在浏览器中设置,但与邮递员一起使用

  10. 10

    如何在IOS浏览器中设置网站Cookie?

  11. 11

    如何使用环回在浏览器中设置Cookie?

  12. 12

    如何在IOS浏览器中设置网站Cookie?

  13. 13

    在 Python cgi 中设置浏览器 cookie 的问题

  14. 14

    浏览器未设置cookie

  15. 15

    未在浏览器中打开Google

  16. 16

    页面未在浏览器中缓存

  17. 17

    代码未在浏览器中为 cookie 生成文件

  18. 18

    Owin Cookie身份验证设置Cookie无法保存在浏览器中

  19. 19

    浏览器未在选项标签上设置所选属性

  20. 20

    拒绝在浏览器中设置不安全的标头“ Cookie”错误,但请求成功

  21. 21

    在Express应用程序中的默认connect.sid浏览器cookie上设置域

  22. 22

    Laravel 7:为什么没有在浏览器中设置我的会话Cookie?

  23. 23

    如何在浏览器中检查Cookie设置为httponly

  24. 24

    浏览器的默认语言设置会影响Cookie中的语言吗?

  25. 25

    未在“ Web API的响应”中设置Cookie

  26. 26

    如果设置了域,浏览器将忽略Cookie

  27. 27

    提取响应未设置浏览器Cookie

  28. 28

    如果设置了域,浏览器将忽略Cookie

  29. 29

    关闭浏览器后如何删除或取消设置Cookie?

热门标签

归档