0

通常访问我的网站会触发这个 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]

因此,随着虚拟 hsot 指向与域相同的目录,http://api.example.com/test/1变为http://example.com/api.php/test/1

两者之间的区别在于 index.php 将与 JSON 一起返回,JSON 是初始页面加载的基本 html 框架。虽然 api 只会返回 JSON

我也有其他服务器可以通过http://api.example.com在网站上不使用的真实 API 调用。

有没有人看到这个问题?有没有更好的办法?

4

1 回答 1

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");
于 2013-06-11T19:17:23.810 回答