Междоменные ограничения Filepicker.io [Rails4 + Turbolinks]

У меня проблемы с Filepicker.io на моем сайте Rails 4. В частности, я иногда получаю следующее сообщение об ошибке JavaScript (примерно в 50% случаев), когда пытаюсь загрузить файл через виджет Filepicker.io.

Blocked a frame with origin "https://www.filepicker.io" from accessing a frame with origin "https://salesbeach.com". Protocols, domains, and ports must match. 

Это происходит как в Chrome, так и в Firefox. Я предполагаю, что Filepicker.io должен, но не возвращает заголовок Access-Control-Allow-Origin: *. Тем не менее, я использовал Filepicker.io на других сайтах без этой проблемы, и мне интересно, может ли Turbolinks быть виновником.

Диагностическая информация

Мой вызов JavaScript:

filepicker.pickAndStore({mimetypes: mimeTypes},{},function(fpfiles) { ... }

и я загружаю библиотеку Filepicker (в HTML <head>) через:

(function() {
  $(document).ready(function() {
    $.getScript('//api.filepicker.io/v1/filepicker.js', function() {
      filepicker.setKey('#{MY_API_KEY}');
    });
  })
})();

<iframe> имеет следующий HTTP-запрос/ответ (из инструментов отладки Chrome):

Запрос

Request URL:https://www.filepicker.io/dialog/comm_iframe/
Request Method:GET
Status Code:200 OK
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:www.filepicker.io
Pragma:no-cache
Referer:https://salesbeach.com/playground
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10
Response Headers
Connection:keep-alive
Content-Encoding:gzip
Content-Length:857
Content-Type:text/html; charset=utf-8
Date:Fri, 19 Jul 2013 19:23:22 GMT
P3P:CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'
P3P:CP="OTI DSP COR ADM DEV TAIo PSA PSD IVAi IVDi CONi HIS OUR IND CNT COM INT NAV"
Server:nginx
Vary:Accept-Encoding
2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1566.2 Safari/537.36

Ответ

Response Headers
Connection:keep-alive
Content-Encoding:gzip
Content-Length:857
Content-Type:text/html; charset=utf-8
Date:Fri, 19 Jul 2013 19:23:22 GMT
P3P:CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'
P3P:CP="OTI DSP COR ADM DEV TAIo PSA PSD IVAi IVDi CONi HIS OUR IND CNT COM INT NAV"
Server:nginx
Vary:Accept-Encoding

Кроме того, я добавил игровую площадку, воспроизводящую ошибку: Playground Environment.


person ghayes    schedule 19.07.2013    source источник
comment
Может быть, поможет мой ответ stackoverflow.com/a/18142900? (stackoverflow.com/questions/17762697/)   -  person stevo    schedule 09.08.2013


Ответы (1)


Немного изменено из: вызовы Javascript API filepicker.io приводят к небезопасные ошибки JavaScript

Это известная проблема chrome/webkit. Это происходит с любым междоменным iframe, который добавляет к себе flash-тег через JavaScript (методика, используемая Ink File Picker). Это не должно влиять на функциональность и является результатом того, что они пытаются использовать обнаружение вспышки, чтобы увидеть, возможны ли параметры изображения и записи видео с веб-камеры.

person Liyan Chang    schedule 20.07.2013