WP REST API和访问-控制-允许-来源

时间:2017-03-11 作者:Łukasz Florczak

在我的一个项目中,我使用了Wordpress REST Api。当我被WP Super cache插件启用缓存时,我现在有一个错误:

XMLHttpRequest cannot load http://api.mydomain.com/wp-json/wp/v1/posts. Origin http://mydomaintwo.com is not allowed by Access-Control-Allow-Origin.

我怎样才能修复它?

1 个回复
SO网友:Łukasz Florczak

我找到了一个.htaccess 解决方案,但如果有人知道一个可行的PHP解决方案,我会很高兴。

这是我的。htaccess支持多域访问,仅访问GET请求:

# CORS Headers
<ifModule mod_headers.c>
    SetEnvIf Origin "^http(s)?://(.+\\.)?(localhost:8080|example\\.com|example\\.net)$" origin_is=$0 
    Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is
    Header always set Access-Control-Allow-Methods "GET"
    Header always set Access-Control-Allow-Headers "X-Requested-With, content-type"
</ifModule>


# BEGIN WordPress
... # default WP rules
# END WordPress


# CORS OPTIONS
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
如果只想使用一个域,可以删除以“setenif…”开头的行,下一步:

Header always set Access-Control-Allow-Origin: "http://example.com"

如果还想使用其他请求,可以用逗号分隔:

Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE"

相关推荐

如果POST太长,WP REST API返回空白响应

我正在开发一个iOS应用程序,它需要使用WP Rest API来获取帖子。一切都很顺利,我使用此端点按ID获取帖子:https://example.com/wp-json/wp/v2/posts/12345 大多数情况下,API都会按预期返回帖子,但如果文章长度超过1300字左右,则会返回空响应。我所说的空是指页面将完全为空,甚至没有404状态码或空数组[]。它确实返回代码200,这意味着一切看起来都很好,但响应为空。从我的疑难解答来看,空白回复的原因似乎是因为帖子的字数太多。我有没有办法更新W