PHPSocketIO,前端通过ajax/axios请求发信息, 控制台报错的CORS跨域问题解决过程小记

文章讲述了在使用ajax进行publish请求时遇到的错误,前端将type改为POST,contentType设为text/plain或其它类型,解决了非简单请求导致的跨域失效问题。后端通过设置HTTP响应头允许跨域,使Ajax请求成功执行。
摘要由CSDN通过智能技术生成

使用ajax发送publish请求进行消息发布时控制台报错如下

前端写的是ajax, type: 'publish', 没有设定contentType

废话不多说, 下面是解决方案

  1. 前端js把type改成POST请求, contentType改为text/plain

ps: 也可以是application/x-www-form-urlencoded、multipart/form-data

敲黑板! 这里要考! 主要是非HEAD, GET, POST的请求, 会多请求一次(非复杂请求, 某度搜的), 导致后端设置的跨域失效(不知道啥原理, 反正改完就变成简单请求, 然后就成功了)

  1. 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);

改完后不报错了

Vue3中解决跨域问题报错Access-Control-Allow-Origin的方法如下: 1. 在项目的config.js文件中添加以下配置: ```javascript proxy: { '/api': { target: 'http://localhost:8081', // 后端服务器的地址 changeOrigin: true, // 是否跨域 ws: true, // 是否代理 websockets secure: true, // 是否https接口 pathRewrite: { '^/api': '' // 路径重置 } } } ``` 这样配置后,所有以`/api`开头的请求都会被代理到后端服务器。 2. 在Vue文件中编写请求: ```javascript created() { axios.get('api/user/findUserAll').then(function (resp) { console.log(resp) }) } ``` 这样就可以使用axios跨域请求了,不再报错Access-Control-Allow-Origin。 需要注意的是,axios本质上是JavaScriptajax封装,因此会受到同源策略的限制。为了解决跨域问题,我们使用代理方式将请求到后端服务器。同时,确保后端服务器已经配置了正确的跨域响应头,例如设置Access-Control-Allow-Origin为允许访问的域名。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Vue3解决跨域问题报错Access-Control-Allow-Origin](https://blog.csdn.net/weixin_45425813/article/details/123911222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue中axios实现数据交互与跨域问题](https://download.csdn.net/download/weixin_38745361/14902123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值