小编coc*_*nup的帖子

前端/后端分离:Safari 不存储 API 中的 cookie,该 API 托管在与其前端 SPA 客户端不同的域上

据我所知,我有一个现在相当常见的设置:一个位于自己的域上的后端 REST API(例如 ),myapi.com以及一个在其他地方提供服务的单页面前端应用程序(例如 )myapp.com

SPA 是 API 的客户端,API 要求用户在执行操作之前进行身份验证。

后端 API 使用 cookie 来存储某些允许来源的会话数据,其中myapp.com. 这是为了有一个安全的总线来传输和存储身份验证数据,而不必担心客户端。

在 Chrome、Opera 和 Firefox 中,这种方式工作得很好:进行 API 调用来验证用户身份,返回 Cookie 并将其存储在浏览器中,以便与下一次调用一起推送。

另一方面,Safari 确实收到了 cookie,但拒绝存储它们:

授权调用

第一次通话

我怀疑 Safari 将 API 域视为第 3 方 cookie 域,因此阻止存储 cookie。

这是 Safari 中的预期行为吗?如果是这样,有哪些最佳实践可以解决这个问题?

authentication cookies safari rest reactjs

6
推荐指数
1
解决办法
2027
查看次数

PostgreSQL:是否可以在单个事务中更改表并插入它?

我的用例如下:我正在定期将数据导入到 PostgreSQL 数据库,其中必须定期导入一些外部数据。

需要注意的是,数据的结构可能会从一个导入更改为另一个导入,因此在插入新数据之前,我会在每次导入时截断+删除所有列。

我想将整个操作包装在单个事务中,因此,如果出现问题,事务将回滚,并且旧数据仍然可以访问(两害相权取其轻)。

例如,数据导入语句可能如下所示:

BEGIN

ALTER TABLE "external_data" DROP "date"
ALTER TABLE "external_data" DROP "column1"
ALTER TABLE "external_data" DROP "column2"

ALTER TABLE "external_data" ADD "date" date DEFAULT NULL
ALTER TABLE "external_data" ADD "column1" text DEFAULT NULL
ALTER TABLE "external_data" ADD "column2" text DEFAULT NULL
ALTER TABLE "external_data" ADD "column3" text DEFAULT NULL

INSERT INTO "external_data" ("date","column1","column2","column3") VALUES ('20170523','Berlin','Chrome','1'),('20170524','Berlin','Chrome','2')

COMMIT
Run Code Online (Sandbox Code Playgroud)

目前这不起作用。INSERT 语句会被卡住,因为在调用它时,该表仍然被前面的 ALTER TABLE 语句锁定。

有什么方法可以在 Postgres 事务中实现这一点,还是我应该放弃并寻求其他应用程序端解决方案?

postgresql transactions insert alter

3
推荐指数
2
解决办法
8361
查看次数

Rails:我可以一起使用 elasticsearch-model 和 active_model_serializers 吗?

我正在 Rails 中构建一个 JSON API,我想使用 Elasticsearch 来加快响应速度并允许搜索。

我刚刚为我的第一个模型实现了 elasticsearch-rails Gem,我可以成功地从控制台查询 ES。

现在我想让 API 消费者可以使用结果,例如,对 /articles/index.json?q="blah" 的 GET 请求将从 ES 检索匹配的文章并根据 JSON:API 标准呈现它们。

是否可以使用 rails active_model_serializers gem 来实现这一点?我问是因为(与 jbuilder 相比)JSON:API 格式已经得到处理。

编辑:这是我目前的立场:

在我的模型中,我有以下内容:

require 'elasticsearch/rails'
require 'elasticsearch/model'
class Thing < ApplicationRecord
    validates :user_id, :active, :status, presence: true
    include Elasticsearch::Model
    include Elasticsearch::Model::Callbacks

    index_name Rails.application.class.parent_name.underscore
    document_type self.name.downcase

    settings index: { number_of_shards: 1, number_of_replicas: 1 } do 
        mapping dynamic: 'strict' do 
            indexes :id, type: :string
            indexes :user_id, type: :string
            indexes :active, type: :boolean …
Run Code Online (Sandbox Code Playgroud)

ruby json ruby-on-rails elasticsearch active-model-serializers

1
推荐指数
1
解决办法
1026
查看次数