来自第三方的脚本标签的来源是什么?

时间:2020-09-10 16:28:34

标签: javascript cookies

在document.cookie域中的MDN上显示

如果未指定,则默认为当前文档位置的主机部分

该域必须与JavaScript来源的域匹配。将cookie设置为外部域将被忽略。 link

现在,如果您加载第三方脚本,这意味着它来自library(shiny) library(shinymaterial) make_panels <- function(n, selected){ tags$div( material_card( material_dropdown(input_id = paste0("dropdown", n), label = paste0("dropdown", n), choices = c("a", "b", "c"), selected = selected), actionButton(paste0("remove", n), label = paste0("remove", n), class = "mybtn") ) ) } ui <- material_page( tags$script(" $(document).on('click', '.mybtn', function(){ $(this).parent().remove(); }) "), material_row( material_column(width = 6, actionButton("add", label = "add"), uiOutput("mypanels") ) ) ) server <- function(input, output, session){ choices = c("a", "b", "c") init_counter <- reactiveVal(3) observe({ for(i in seq_len(isolate(init_counter()))){ insertUI(selector = "#mypanels", where = "beforeEnd", ui = make_panels(i, choices[i])) } }) observeEvent(input$add, { panel_index <- init_counter() + input$add insertUI(selector = "#mypanels", where = "beforeEnd", ui = make_panels(panel_index, choices[panel_index])) }) } shinyApp(ui, server) 而不是xyz.com,并且此加载的脚本将设置cookie且未指定域。然后在yourdomain.com上设置一个cookie。但是,第二条规则说域必须匹配脚本原点。脚本的来源是yourdomain.com,它在域xyz.com上设置cookie。

这是矛盾吗?我误会了吗?

我已经确认,是的,第三方脚本可以实际修改主机页面的cookie。

1 个答案:

答案 0 :(得分:2)

将基于请求的资源的URL设置带有HTTP Set-Cookie头的cookie(无论该资源是HTML文档,脚本,图像还是其他东西)。

使用客户端JS(document.cookie)设置的cookie将基于脚本正在运行的HTML文档的URL进行设置(即使JS加载了src属性指向使用其他主机名)。

脚本来源是托管脚本的HTML文档,而不是脚本的URL。