通常访问我的网站会触发此htaccess规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php$1 [L]
所以http://example.com/test/1变为http://example.com/index.php/test/1
对于AJAX调用,我有这个:
RewriteCond %{HTTP_HOST} ^api\.example\.net
RewriteRule ^(.*)$ /api.php$1 [L]
因此,指向与域{,3}}相同的目录的虚拟hsot变为http://api.example.com/test/1
两者之间的区别在于index.php将与JSON一起返回,JSON是初始页面加载的基本html框架。虽然api只会返回JSON
我还有其他服务器可以通过http://example.com/api.php/test/1在网站上使用的REAL API调用。
有没有人看到这个问题?还有更好的方法吗?
答案 0 :(得分:1)
普通JSON的问题在于您无法执行跨域AJAX请求,包括子域。但是每个问题都是一个解决方案。有一种名为CORS的技术,这意味着您只需添加一个特殊标头即可允许跨域调用。
因此,如果您只想允许域example.com,标题应如下所示:
Access-Control-Allow-Origin: http://example.com
如果您想允许所有域的访问,请改为使用星号:
Access-Control-Allow-Origin: *
最后是PHP代码,你必须在任何其他输出之前放置这行php,否则你会收到警告并且ajax调用将失败:
header("Access-Control-Allow-Origin: http://example.com");