最近在做一个后台接口,

顺便用ionic4写了个简单的管理后台,

本来skynet管理后台监听的端口是6666,

但是发现chrome默认对一些接口不友善,

虽然可以通过设置启动参数来解决,

但是还是把端口改掉了。

嗯,这个不是今天要记录的内容。

需要记录的内容是:改了监听端口之后,skynet明明可以响应成功,但是却在前端显示CORS错误。

之前用nodejs+express的话,很简单的就能解决,利用express的中间件,在响应头里面写入跨域相关的头信息。

但是skynet的http接口比较晦涩,找起来比较麻烦,skynet的httpd的响应请求部分代码如下:

local function writeall(writefunc, statuscode, bodyfunc, header)
local statusline = string.format("HTTP/1.1 %03d %s\r\n", statuscode, http_status_msg[statuscode] or "")
writefunc(statusline)
if header then
for k,v in pairs(header) do
if type(v) == "table" then
for _,v in ipairs(v) do
writefunc(string.format("%s: %s\r\n", k,v))
end
else
writefunc(string.format("%s: %s\r\n", k,v))
end
end
end
local t = type(bodyfunc)
if t == "string" then
writefunc(string.format("content-length: %d\r\n\r\n", #bodyfunc))
writefunc(bodyfunc)
elseif t == "function" then
writefunc("transfer-encoding: chunked\r\n")
while true do
local s = bodyfunc()
if s then
if s ~= "" then
writefunc(string.format("\r\n%x\r\n", #s))
writefunc(s)
end
else
writefunc("\r\n0\r\n\r\n")
break
end
end
else
assert(t == "nil")
writefunc("\r\n")
end
end function httpd.write_response(...)
return pcall(writeall, ...)
end

所以,我们只需要在响应的时候这样写就可以了

local headers = {
['Access-Control-Allow-Origin'] = '*', -- 这里写允许访问的域名就可以了,允许所有人访问的话就写*
['Access-Control-Allow-Credentials'] = true,
}
local ok, err = httpd.write_response(sockethelper.writefunc(id),_,_,headers)

ionic4请求skynet服务器的资源跨域问题的更多相关文章

  1. 基于 HTTP 请求拦截,快速解决跨域和代理 Mock

    近几年,随着 Web 开发逐渐成熟,前后端分离的架构设计越来越被众多开发者认可,使得前端和后端可以专注各自的职能,降低沟通成本,提高开发效率. 在前后端分离的开发模式下,前端和后端工程师得以并行工作. ...

  2. (三)ajax请求不同源之jsonp跨域

    凡是拥有"src"这个属性的标签都具有跨域的能力,比如<script>.<img>.<iframe>. JS中,我们直接用XMLHttpRequ ...

  3. nginx/apache静态资源跨域访问问题详解

    1. apache静态资源跨域访问 找到apache配置文件httpd.conf 找到这行 #LoadModule headers_module modules/mod_headers.so把#注释符 ...

  4. 解决web资源跨域请求问题

    参考地址: http://my.oschina.net/lichaoqiang/blog/317823 在浏览器请求中,出现跨域访问资源的问题,我们肯定会遇到.如果跨域请求被阻止,有可能导致css.j ...

  5. 本地主机作服务器解决AJAX跨域请求访问数据的方法

    近几天学到ajax,想测试一下ajax样例,由于之前在阿里租用的服务器过期了,于是想着让本地主机既做服务器又做客户端,只是简单地测试,应该还行. 于是,下载了xampp,下载网址http://www. ...

  6. 跨域访问 - 跨域请求 同源策略概念对跨域请求的影响 及几种解决跨域请求的方法如 jsonp

    为什么会设置同源策略 > 适用于浏览器的一种资源访问策略 > 同源策略(Same origin policy)是一种约定,它是浏览器最核 心也最 基本的安全功能,如果缺少了同源策略,则浏览 ...

  7. (三)ajax请求不同源之cors跨域

    一.基本原理 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)它允许浏览器向跨源服务器,发出 XMLHttpReque ...

  8. (三)ajax请求不同源之websocket跨域

    WebSocket是一种通信协议,使用ws://(非加密)和wss://(加密)作为协议前缀.该协议不实行同源政策,只要服务器支持,就可以通过它进行跨源通信. 一.WebSocket目标 在一个单独的 ...

  9. 解决异地服务器接口访问跨域,node构建反向代理

    跨域对于前端来说是一个老大难的问题,许多方法如jsonp.document.domain + iframe...都有或多或少的问题,一个最佳实践就是通过服务器nginx做反向代理,但奈何不懂相关知识, ...

  10. 用Nginx代理请求,处理前后端跨域

    自从前端spa框架出现后,都是前后端分离开发了.我们在开发的时候难免会遇到跨域的问题.跨域这种问题解决的方法基本都是在服务端实现的.以java为例,我知道的有3种方法处理跨域: 1.使用 @Cross ...

随机推荐

  1. 一次查找分子级Bug的经历,过程太酸爽了

    "Debugging is like trying to find a needle in a haystack, except the needle is also made of hay ...

  2. Windows操作系统中常用的Dos命令

    打开CMD的方式: Win+R 输入cmd打开控制台(推荐使用) 在任意文件夹下,按住shift键,点击鼠标右键,选择在此处打开命令行窗口 在资源管理器的地址栏路径前面加上cmd+空格: 常用的Dos ...

  3. 确保使用正确的CSI提交HW问题

    最近有用户一体机有问题,需要技术支持,首先找到我这边,其实就是一个简单的坏盘类问题,换盘即可. 在保期间,要求客户提交一个SR给后台,但是客户提交后,就一直被要求提供HW的CSI号: xxx: Can ...

  4. Elastaticsearch 集群部署

    系统Ubuntu 16.04 Elastaticsearch 5.6.9 Kibana 5.6.9 官网地址 https://www.elastic.co/products/elasticsearch ...

  5. TheRoleofSpatialPyramidalPoolinginConvolutionalNeuralNe

    目录 1. 引言 2. 技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍 2.3. 相关技术比较 3. 实现步骤与流程 3.1. 准备工作:环境配置与依赖安装 3.2. 核心模块实现 3 ...

  6. 【C#/.NET】MAUI上的依赖注入

    ​ 引言 在移动应用开发中,依赖注入是一项非常重要的技术,它可以帮助我们简化代码结构.提高可维护性并增加测试覆盖率.在最新的.NET跨平台框架MAUI中,我们也可以利用依赖注入来构建高效的应用程序架构 ...

  7. 脱发秘籍:前端Chrome调试技巧汇总

    Chrome浏览器调试工具的核心功能: 注:本文测试.截图均为Edge浏览器(内核是Chromium),浏览器内核可了解<有哪些浏览器/内核?> 00.基础操作汇总 操作类型 快捷键/说明 ...

  8. java查询sql动态查询需要的字段

    方法一:使用"trim"标签. <select id="selTest" parameterType="mocha.framework.enti ...

  9. 分享一个Java功能小案例(代码已开源哦)

    工程合集 工程列表 地址预览 B站 抖音

  10. Linux 日志收集器:syslog,syslog-ng,rsyslog

    一 参考:https://www.cnblogs.com/zhaoyong631/p/14441090.html 基本上,它们都是相同,它们都允许在中央存储库中记录来自不同类型系统的数据. 但是它们是 ...