Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过小部件设置第三方cookie,以便我以后可以识别用户_Javascript_Jquery_Cookies_Widget_Jsonp - Fatal编程技术网

Javascript 通过小部件设置第三方cookie,以便我以后可以识别用户

Javascript 通过小部件设置第三方cookie,以便我以后可以识别用户,javascript,jquery,cookies,widget,jsonp,Javascript,Jquery,Cookies,Widget,Jsonp,我正在尝试从用户添加到其网站的小部件设置第三方cookie。小部件位于user-site.com上,托管代码为o admin-site.com。我的目标是为它们设置一个cookie,以便小部件能够在安装小部件的任何网站上识别它们。我不想使用弹出窗口,让他们通过我的网站登录。我只想通过小部件为它们设置一个cookie,然后能够识别它们 需要2行代码来显示小部件;1.js文件和1行html 将小部件添加到user-site.com后,将显示两个文本字段;1表示您的姓名,1表示您的电子邮件。然后单

我正在尝试从用户添加到其网站的小部件设置第三方cookie。小部件位于user-site.com上,托管代码为o admin-site.com。我的目标是为它们设置一个cookie,以便小部件能够在安装小部件的任何网站上识别它们。我不想使用弹出窗口,让他们通过我的网站登录。我只想通过小部件为它们设置一个cookie,然后能够识别它们

  • 需要2行代码来显示小部件;1.js文件和1行html
将小部件添加到user-site.com后,将显示两个文本字段;1表示您的姓名,1表示您的电子邮件。然后单击一个按钮进行提交。然后,我返回用户的用户id,并尝试通过小部件设置cookie。这不管用

user-site.com需要在其html中添加两行代码,以使小部件显示 但是,我无法从widget.js获取
cookie1
的值。我尝试使用以下方法获取cookie值:

alert(document.cookie.indexOf("cookie1")); // This doesn't return the same value I set the cookie to from the HTTP header

但是,这不会返回与我在HTTP头中设置cookie相同的值。如何在widget.js中调用相同的值?

JavaScript始终在嵌入它的HTML文档的上下文中运行,因此您无法使用JavaScript设置第三方cookie


在JSONP响应上使用HTTP头设置cookie(请记住,许多浏览器配置为完全阻止第三方cookie)。

widget\u update.php
设置cookie

您应该设置“安全”属性(假设admin-site.com通过HTTPS提供),以防止最终用户使用公共WiFi时有人窃取该信息


您还需要将SameSite属性设置为“None”。现代浏览器正试图提高互联网安全性并防止数据泄漏,因此,如果您没有明确表示“samesite=none”的第三方网站允许使用cookie,cookie可能会被阻止。

您无法在GET请求上设置内容类型,没有内容可描述cookie的类型。我更新了代码并删除了该代码。有没有一种方法可以成功地用更新后的代码设置cookie?能否提供一个在widget.js中工作的简短代码示例?谢谢你,昆汀。
`啊,是的,我已经试过了,现在又重新实现了。我用代码示例更新了我的问题,解释了为什么我对这个问题有异议。当我试图在widget.js中调用
cookie1
时,我无法获取它的值。你能看一下让我知道为什么我的代码不起作用吗?谢谢你!正如我所说的-Javascript只能访问代码运行所在页面的cookies。它无法读取或写入第三方cookie。如果您希望cookie数据可供JS使用,则必须从服务器端代码中输出它。但是,从widget.JS,我会将cookie值存储在哪种类型的变量中,我知道它是从嵌入该小部件的任何网站设置的?(即使重新加载页面等)
// Create the input fields and submit button
var login_name = '<input type="text" name="name" />';
var login_email = '<input type="email" name="email" />';
var login_button = '<input type="button" value="Login" />';
var add_fields_to_html_snippet = login_name + login_email + login_button;

$('#widget-container').html(add_fields_to_html_snippet);

$.ajax({
    url : "http://example.com/widget_update.php",
    type: "GET",
    data: { name:name, email:email },
    dataType:"jsonp",
    jsonp:"mycallbackupdate",
    success:function(data) { // The server side sends back the users id which will become the value of the 3rd party cookie

        // This is the value *user_id returned from server side
        var value = data.user_id;
        // I'm trying to set a cookie but it doesn't work
        document.cookie = 'cookie1=' + user_id + '; expires=Fri, 3 Aug 2016 20:47:11 UTC; path=/'

        }           
    });
$_COOKIE['user_id'] = $user_id;
$expire = time() + 60 * 60 * 24 * 365;
setcookie('cookie1', $_COOKIE['user_id'], $expire);
alert(document.cookie.indexOf("cookie1")); // This doesn't return the same value I set the cookie to from the HTTP header