使用ajax发送publish请求进行消息发布时控制台报错如下
前端写的是ajax, type: 'publish', 没有设定contentType
废话不多说, 下面是解决方案
前端js把type改成POST请求, contentType改为text/plain
ps: 也可以是application/x-www-form-urlencoded、multipart/form-data
敲黑板! 这里要考! 主要是非HEAD, GET, POST的请求, 会多请求一次(非复杂请求, 某度搜的), 导致后端设置的跨域失效(不知道啥原理, 反正改完就变成简单请求, 然后就成功了)
PHP后端修改参考以下代码
use Workerman\Protocols\Http\Response; # 使用响应
# $inner_http_worker->onMessage时触发
# 响应内容
$response = new Response();
# 跨域请求头设置
$response->header('Access-Control-Allow-Origin', '*');
# 响应类型
$response->header('Access-Control-Allow-Methods', '*');
# 响应头设置
$response->header('Access-Control-Allow-Headers', 'x-requested-with,content-type');
# 最后这样返回就行了, ajax测试不报错了
return $http_connection->send($response->withBody('ok'), true);
改完后不报错了