2014-03-04 42 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)

通过这种方式,您可以兑现最安全的方法,并回退到不符合规范的客户端。

相关问题