我是angularJS的初学者。
我试图从angularJS应用程序中的API(CakePHP)获取数据。我有一个名为"获取"的菜单。只需单击"获取"菜单,它就会被重定向到"获取数据"页面,但控制台中弹出'Network Error. Cross Origin Request Blocked'
错误,数据不会加载。但是,如果我在"fetchData"页面中按Ctrl+f5
,它可以工作,并且数据会成功加载到页面上,而不会出现网络问题。
蛋糕 php 中的 .htaccess 文件是这样的:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
SetEnvIf Origin "^http(s)?://(.+'.)?(my_url.com)$" origin_is=$0
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is
Header set Access-Control-Allow-Credentials: true
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin,Authorization, authtoken, Accept"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
</IfModule>
我不知道问题是客户端还是服务器端。任何建议都将是可观的。
请尝试在该 php 文件中使用此代码。
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
cakephp 3.2 有 CorsBuilder 这是我的使用示例
$this->response
->cors($this->request)
->allowOrigin(['http://localhost:8100'])
->allowCredentials(TRUE)
->allowMethods(['GET', 'POST'])
->exposeHeaders(['Link'])
->maxAge(300)
->build();