我在向YII2上的后端发送HTTP请求时遇到问题。我的Ionic代码如下所示:
let headers = new Headers();
headers.append('content-type','application/json');
headers.append('token', this.sessiontoken);
let options = new RequestOptions({ headers: headers});
console.log('HEADERS-----------', options);
return this.http.get(this.userprofileapi,options)
.map((res:Response) => res.json())
.catch((error:any)=>Observable.of(error))
在YII2中,我打开了我的角色过滤器:
public function behaviors()
{
$behaviors['corsFilter'] = [
'class' => \yii\filters\Cors::className(),
'cors' => [
// restrict access to
'Access-Control-Allow-Origin' => ['*'],
'Origin' => ["*"],
'Access-Control-Request-Method' => ['POST', 'GET'],
'Access-Control-Allow-Credentials' => true,
'Access-Control-Max-Age' => 3600
],
];
return $behaviors ;
}
但在发送错误信息时:
对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许来源“http://localhost:8100” 访问。
不发送标题。有人在此之前遇到过这个问题吗?以及如何解决这个问题?
答案 0 :(得分:0)
this site很好地解释了发生了什么。
将您的ionic.project
文件设置为:
{
"name": "proxy-example",
"app_id": "",
"proxies": [
{
"path": "/api",
"proxyUrl": "http://cors.api.com/api"
}
]
}
使用ionic serve
运行您的服务器。
如上所述,当您在路径http://localhost:8100/api
访问离子服务器时,它会代表您将请求代理到http://cors.api.com/api
。
因此,不需要CORS。