2014-03-04 67 views
1

我正在爲公共網站提供內容,我想知道是否會對使用CORS和JSONP提供最大瀏覽器支持有任何影響。舉例來說,我會做這樣的:爲CORS和JSONP提供服務內容

<?php 

// Simplified example to illustrate 

if(isset($_GET['callback'])) { 
    header('Content-Type: application/javascript; charset=utf-8'); 
    echo $_GET['callback'] . '(' . json_encode(...) . ')'; 
    exit; 
} 

header('Access-Control-Allow-Origin: *'); 
header('Content-Type: application/json; charset=utf-8'); 

echo json_encode(...); 

很顯然,我不會因爲這似乎是反直覺的JSONP響應發送CORS相關的頭。這種方法是否存在安全性或其他影響?

回答

1

考慮到CORS在這裏停留,我建議切換您發送數據的順序。

  1. Detect CORS support
  2. 如果支持CORS,發送你的application/json響應
  3. 如果不支持CORS,回退到JSONP(IE < = 7,歌劇< 12,或Firefox < 3.5)

通過這種方式,您可以兌現最安全的方法,並回退到不符合規範的客戶端。

相關問題