问答 atx2 同局域网部署后,发现节点访问存在跨域问题,求大佬指点下。

lixf6 · November 24, 2021 · Last by weixiaovision replied at November 25, 2021 · 2198 hits

具体情况:
请教下各位大大,atx2 同局域网部署后,发现节点访问存在跨域问题,有没有什么解决思路可供参考(界面能点击 APP,但是无法使用和节点 ip 相关的请求操作)
服务器 ip 为:Origin: http://A:4000
节点 ip 为:Host: B:20006
Referer: http://A:4000/devices/ea81bd/remotecontrol
浏览器报错:已拦截跨源请求:同源策略禁止读取位于 http://B:20004/shell?command=am%20start%20-a%20android.settings.SETTINGS 的远程资源。(原因:CORS 请求未能成功)
相关截图:

共收到 3 条回复 时间 点赞

(我瞎回答的)看一看 atx-server 有没有默认做了 CORS 配置,将其设置为不生效试试(牺牲了安全性,但如果是内部系统,风险相对低一些)

王稀饭 回复

感谢回复,这个思路已经确认过了。里面默认都是 CORS_ORIGIN = '*',针对于此改过调试,发现结果并不支持跨域,逻辑上看,应该是 ATX-AGENT 对应的后端 cors 配置影响,个人希望还是能在 atx-server 配置。
有相关同学说可以在 atx-server 源码的 base.py 中做如下修改支持:但调试发现还是不支持

class CorsMixin(object):
    CORS_ORIGIN = '*'
    CORS_METHODS = 'GET,POST,OPTIONS'
    CORS_CREDENTIALS = True
    CORS_HEADERS = "x-requested-with,authorization"

    def set_default_headers(self):
        alloworigins = ['']
        origin = self.request.headers.get("Origin")
        print('~~~~~~~~~~~~~~~~~~~~~~~', origin)
        if origin in alloworigins:
            self.set_header("Access-Control-Allow-Origin", origin)
        # self.set_header("Access-Control-Allow-Origin", self.CORS_ORIGIN)
        self.set_header("Access-Control-Allow-Headers", self.CORS_HEADERS)
        self.set_header('Access-Control-Allow-Methods', self.CORS_METHODS)

atx2 兼容性怎么样,另外清晰度能设置吗

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up