报错信息:Access to XMLHttpRequest at 'http://www.tp5.com/bind/index' from origin 'http://192.168.10.168:55151' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
本人小白一枚,看文档是 GatewayWorker发现有页面发起连接时,将对应连接的client_id发给网站页面这一步骤的时候,发起ajax请求之后出现跨域问题,
前端页面请求:
$.ajax({
type: 'post',
url: 'http://www.tp5.com/bind/index',
data: {
client_id:data['client_id']
},
dataType: 'json',
success: function(data) {
alert(data.state);
}
})
bind.php:
<?php
namespace app\controller;
//加载GatewayClient。关于GatewayClient参见本页面底部介绍
require_once 'E:\phpstudy\phpstudy_pro\WWW\fgw\public\static\GatewayClient-master\Gateway.php';
// GatewayClient 3.0.0版本开始要使用命名空间
use GatewayClient\Gateway;
use think\Request;
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
class Bind extends Base
{
public function index(Request $request)
{ header("Access-Control-Allow-Origin: *");
$client_id=$request->post('client_id');
Gateway::$registerAddress = '127.0.0.1:1236';
// 假设用户已经登录,用户uid和群组id在session中
$uid= 1;
$group_id = 1;
// client_id与uid绑定
Gateway::bindUid($client_id, $uid);
// 加入某个群组(可调用多次加入多个群组)
Gateway::joinGroup($client_id, $group_id);
echo json_encode(array('state'=>'success'));
}
}
求大神求教
这是你TP5框架问题,请使用JSONP
GatewayClient的服务启动了吗?
用的是 start_for_win.bat
那你用跨域是tp程序里面设置一下了
跨域也是访问你tp5的跨域,服务端与服务端是没有跨域的.
这是我以前tp5处理跨域的,注意,这个是根据请求地址,动态设置允许跨域的域名,所以是允许所有网站访问的.
//请求头的 Origin 值
$web = request()->header('Origin');
//跨域请求设置
header("Access-Control-Request-Method:GET,POST");
header("Access-Control-Allow-Credentials:true");
header("Access-Control-Allow-Origin:".$web);
if (request()->isOptions()) {
exit;
}
直接访问这个网址报错:stream_socket_client(): unable to connect to tcp://0.0.0.0: (Failed to parse address "0.0.0.0:"),是我没配置好么
打印client_id 看看,可能传成了空