NetworkError:403将eventourcr分配给完整日历时被禁止

时间:2016-10-13 04:42:45

标签: php fullcalendar eventsource

我正在使用php进行长时间池化(其工作正常)并将其输出JSON分配给fullcalender事件源。

我的js代码

var source = new EventSource(WEBROOT+'model/applongpooling.php?start=1476037800&end=1476642600');
source.addEventListener('message', function(e) {
     console.log(e.data);
     $('#calendar').fullCalendar( 'removeEvents');
     $('#calendar').fullCalendar('addEventSource',e.data);// here i am getting error
}, false);

我的php池代码。

<?php
     header('Content-Type: text/event-stream');
     header('Cache-Control: no-cache');
     function SetAppointment(){
       //my logic which is working fine and giving me correct result

         echo 'data: ' . json_encode($res) . "\n\n";//code to get output
         echo PHP_EOL;
         ob_flush();
         flush();
     }
 do {
 SetAppointment();
  sleep(15);

  // If we didn't use a while loop, the browser would essentially do polling
  // every ~3seconds. Using the while, we keep the connection open and only make
  // one request.
} while(true);
?>

在控制台中我得到了正确的输出。

Consol Output

我收到错误,

Error

在另一个js中,我还将事件源分配给fullcalender,

eventSources: [
        {
            url:'model/appointments.php',
            editable: true,
        }
    ]

所以我的问题在哪里我错了,有什么建议吗?为什么我会收到这样的错误?

1 个答案:

答案 0 :(得分:0)

我不认为您的错误消息可能与您的EventSource()调用匹配,那么您是否使用Apache重写规则(或类似的东西)?如果是这样,那些错误就在那些重写规则中。 (我打算问一下WEBROOT是什么,但我想的越多,我觉得这不重要。)

原因:您的EventSource调用网址以“model / applongpooling.php?start = 1476037800&amp; end = 1476642600”结尾。但您的错误消息以“back_color%22:%22?start = 1476037800&amp; end = 1476642600”结尾。即一切都在前面?已被改变。

我希望网址中的所有噪音都是造成403错误的原因。例如。也许它试图访问一些不存在的目录?但是,重写调用也可以明确地发出403。