在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。
答案 0 :(得分:2)
将基于请求的资源的URL设置带有HTTP Set-Cookie
头的cookie(无论该资源是HTML文档,脚本,图像还是其他东西)。
使用客户端JS(document.cookie
)设置的cookie将基于脚本正在运行的HTML文档的URL进行设置(即使JS加载了src
属性指向使用其他主机名)。
脚本来源是托管脚本的HTML文档,而不是脚本的URL。