Установка междоменных cookie в Safari

хорошая новость для пользователя python в случае, если у вас много столбцов, и вы хотите сохранить все остальные столбцы, не разбитые на разделы в формате csv, которые не удастся, если вы используете «текстовый» метод как предложение Ника Чаммаса.

people_df.write.partitionBy("number").text("people") 

сообщение об ошибке «AnalysisException: источник данных u'Text поддерживает только один столбец, и у вас есть 2 столбца.;»

In spark 2.0.0 (моя тестовая среда - это искра hdp 2.0.0) пакет «com.databricks.spark.csv» теперь интегрирован и позволяет нам сохранять текстовый файл, разделенный только на один столбец, см. Пример blow:

people_rdd = sc.parallelize([(1,"2016-12-26", "alice"),
                             (1,"2016-12-25", "alice"),
                             (1,"2016-12-25", "tom"), 
                             (1, "2016-12-25","bob"), 
                             (2,"2016-12-26" ,"charlie")])
df = people_rdd.toDF(["number", "date","name"])

df.coalesce(1).write.partitionBy("number").mode("overwrite").format('com.databricks.spark.csv').options(header='false').save("people")

[root@namenode people]# tree
.
├── number=1
│?? └── part-r-00000-6bd1b9a8-4092-474a-9ca7-1479a98126c2.csv
├── number=2
│?? └── part-r-00000-6bd1b9a8-4092-474a-9ca7-1479a98126c2.csv
└── _SUCCESS

[root@namenode people]# cat number\=1/part-r-00000-6bd1b9a8-4092-474a-9ca7-1479a98126c2.csv
2016-12-26,alice
2016-12-25,alice
2016-12-25,tom
2016-12-25,bob
[root@namenode people]# cat number\=2/part-r-00000-6bd1b9a8-4092-474a-9ca7-1479a98126c2.csv
2016-12-26,charlie

В моей искровой версии 1.6 .1 enviroment, код не выдавал никакой ошибки, однако это только один сгенерированный файл. он не разбивается на две папки.

Надеюсь, это поможет.

61
задан billynoah 9 September 2019 в 23:57
поделиться

10 ответов

От Safari Developer FAQ :

Safari поставлется с консервативной политикой в отношении файлов куки, которая ограничивает записи cookie только выбранными страницами ("перемещенный к") пользователем. Эта консервативная политика по умолчанию может перепутать основанные на кадре сайты, которые пытаются записать cookie и сбой.

я не нашел способа обойти это.

, Если это стоит чего-нибудь, Chrome не устанавливает cookie также, если Вы используете <script> добавление метода, но если у Вас есть скрытое <img> с тем же источником, работами Chrome в дополнение к остальной части браузеров (кроме, снова, Safari)

58
ответ дан Paolo Bergantino 24 November 2019 в 17:22
поделиться

Это не недостающий атрибут типа, это является раздражающим Вы?-)

<script type="text/javascript">
  var head = document.getElementsByTagName("head")[0];
  var script = document.createElement("script");
  script.setAttribute("type","text/javascript");
  script.src = "A.com/setCookie?cache=1231213123";
  head.appendChild(script);
</script>
-12
ответ дан roenving 24 November 2019 в 17:22
поделиться

Попробуйте что-то как:

var w = window.open("A.com/setCookie?cache=1231213123");
w.close();

Это может обойти политику безопасности сафари.

-2
ответ дан jcampbell1 24 November 2019 в 17:22
поделиться

Возможно, практично создайте и нажмите на ссылку с href="A.com/setCookie?cache=1231213123" и целевой атрибут, указывающий на скрытый iframe. То, что может политика обходного Safari пользовательской навигации для установки cookie (у меня нет Safari удобным для тестирования.)

0
ответ дан Zach 24 November 2019 в 17:22
поделиться

Я сделал некоторое обширное расследование вокруг этого, когда я пытался развернуть сайт, который использовал Windows Live ID, который зависел от способности смочь привести в порядок сторонние cookie, чтобы выйти из системы. Это просто... не работало. Ничто, что мы могли сделать, не заставит это работать. Живая идентификационная команда также сделала обширное расследование, и их ответ был, "не может заставить его работать".

0
ответ дан Brad Wilson 24 November 2019 в 17:22
поделиться

Существует что-то вроде злого приема, предполагающего, что у них есть установленная флэш-память.

я не уверен, работает ли это все еще или нет, но Flash'es "Локальные общие объекты" иначе , Флэш-куки могли бы помочь Вам плавать вокруг той-же-доменной-политики Safari.

Учебное руководство

по Локальному общему объекту Однако это может быть сложно для реализации по меньшей мере.

Additonally, LSO's прибывает в свет, как являющийся кошмаром безопасности:

Так думает тщательно перед использованием их.

4
ответ дан Kent Fredric 24 November 2019 в 17:22
поделиться

Обходной путь, который мы только что придумали в моей работе, заключался в установке cookie через window.open () - это может быть не оптимальным для вас (так как у вас будет уродливое всплывающее окно окно открыто), но у нас это сработало. В любом случае нам нужно было открыть всплывающее окно для аутентификации OAuth.

Итак, суть того, что мы сделали:

  1. Пользователь щелкает ссылку с B.com
  2. Всплывающее окно открывается на A.com/setCookie
  3. A.com устанавливает свой cookie, а затем перенаправляет на B.com в нужное место

Опять же, действует не во всех решениях, но сработало в нашем. Надеюсь, это поможет.

2
ответ дан 24 November 2019 в 17:22
поделиться

Обратите внимание на эту строку:

script.src = "A.com/setCookie?cache=1231213123";

Я не мог заставить это работать, пока я не добавил http, т.е.

script.src = "http://A.com/setCookie?cache=1231213123";
0
ответ дан 24 November 2019 в 17:22
поделиться

Вот работающее решение:

http://anantgarg.com/2010/02/18/cross-domain-cookies-in-safari/

13
ответ дан 24 November 2019 в 17:22
поделиться

Я знаю, что этот вопрос довольно старый, но он помог мне решить проблему с куки-файлами:

var cookieForm = document.createElement("form");
cookieForm.action = "A.com/setCookie?cache=1231213123";
cookieForm.method = "post";
document.body.appendChild(cookieForm);

cookieForm.submit();

Идея разместить форму на странице, которая устанавливает ваши куки-файлы.

2
ответ дан 24 November 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: