每次都必须按 CTRL+f5 才能点击 api.如果不按它,就会弹出跨源请求阻止错误


Have to press CTRL+f5 everytime to hit api. Without pressing it, cross origin request blocked error popped up

我是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();