odoo16跨域问题解决办法--适用app端、web端、跨系统接口
Odoo的跨域问题:
由于浏览器的同源策略所引起的。同源策略是一种安全策略,它限制了一个源(协议、域名、端口)的文档或脚本如何与另一个源的资源进行交互。
如果两个源不同,则无法进行跨域交互。因此,如果Odoo应用程序在一个域名下运行,而客户端在另一个域名下运行,则会出现跨域问题。
为了解决Odoo的跨域问题,可以在Odoo的Nginx或Apache等Web服务器中进行配置。以下是一些可能的解决方法:
一、通过nginx配置
在Nginx中添加跨域头信息
在Nginx的配置文件中添加以下内容:
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
...
}
这里将Access-Control-Allow-Origin设置为*,表示允许所有域名访问。
二、如果是odoo内部应用的接口,一般在接口加上cors="*" 参数就行
可以在Controller接口上配置参数,如:
@http.route("/", type='json', auth="none", csrf=False, method=["POST"],website=True, cors="*")
这样前端在进行接口调用的时候,就可以调通了,跨域问题就解决了。
三、可以使用Odoo的CORS模块来解决跨域问题,可以在请求头中 加入。'Access-Control-Allow-Origin' '*' 永久解决
# -*- coding: utf-8 -*-
import json
import jinja2
import sys
import os
import logging from odoo.http import JsonRequest, Response
from odoo.tools import date_utils _logger = logging.getLogger(__name__) def _json_response(self, result=None, error=None):
# 自定义odoo接口返回数据格式,获取到参数ext就直接返回json数据,否则就返回默认数据格式
"""
{
'jsonrpc': '2.0',
'id': 12,
'result': {}
}
"""
if self.endpoint and self.endpoint.routing.get('ext'):
response = {}
if error is not None:
response = {
'jsonrpc': '2.0',
'id': self.jsonrequest.get('id')
}
response['error'] = error
if result is not None:
response = result
else:
# odoo返回的默认数据格式
response = {
'jsonrpc': '2.0',
'id': self.jsonrequest.get('id')
}
if error is not None:
response['error'] = error
if result is not None:
response['result'] = result mime = 'application/json'
body = json.dumps(response, default=date_utils.json_default) return Response(
body, status=error and error.pop('http_status', 200) or 200,
# 解决接口跨域问题,比如app与应用后台的接口跨域
headers=[('Content-Type', mime),('Access-Control-Allow-Origin', '*'),('Content-Length', len(body))]
) # 重写JsonRequest中的_json_response方法
setattr(JsonRequest, '_json_response', _json_response)
odoo16跨域问题解决办法--适用app端、web端、跨系统接口的更多相关文章
- ajax请求ashx跨域问题解决办法
ajax请求ashx跨域问题解决办法 https://blog.csdn.net/windowsliusheng/article/details/51583566 翻译windowsliusheng ...
- javascript 跨域问题解决办法总结
跨域的意思就是不同域名之间的页面默认是无法通信的.因为浏览器默认是禁止跨域的: 图所示:chrome浏览器尝试获取mainFrame失败,提示DomException 1).假如你有个网站 a.com ...
- php前后端分离项目跨域问题解决办法
由于之前一直没有做过前后端分离项目,导致走了不少弯路,而且还采用了一种及其不优雅的方法 (在第一次请求的时候把服务器返回的session id保存起来,后续请求的时候把该session id作为参数传 ...
- PHP Ajax跨域问题解决办法
在项目开发中,经常会遇到跨域访问资源,上传图片等,那么这些都怎么解决呢,下面简单介绍一下ajax请求时,解决跨域问题. 原文地址:小时刻个人博客 > http://small.aiweimeng ...
- AJAX跨域问题解决方法(2)——JSONP解决跨域
JSONP是什么?JSON全称为JSON with Padding,是JSON的一种补充的使用方式,不是官方协议. 使用JSONP服务器后台要改动吗?JSONP不同于一般的ajax请求返回json对象 ...
- HTTPS请求HTTP接口被浏览器阻塞,python实现websocket客户端,websocket服务器,跨域问题,dwebsocket,https,拦截,服务端
HTTPS请求HTTP接口被浏览器阻塞,python实现websocket客户端,websocket服务器,跨域问题,dwebsocket,https,拦截,服务端 发表时间:2020-03-05 1 ...
- django 前端请求跨域问题解决
django 前端请求跨域问题解决 笔者之前在做django-restful-api开发的时候,在前端请求页面发送请求的时候直接出现301,域名重定向的问题,经过一番查阅资料,终于得到了非常完美的解决 ...
- vue中axios访问Java后端跨域问题解决
问题背景: 前后端分离,前端选用Vue,后端选用Java,vue编译出的静态页面采用ngix发布,在前端访问后端时出现跨域问题. 解决方法: 跨域的问题解决方法有好多种,这里是通过服务端解决,以下是代 ...
- 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)
前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...
- JavaScript跨域解决办法
在找到跨域解决办法之前,我们要先弄清楚一些基本概念 什么是跨域? 什么是“同源策略”? 跨文档消息通信 & 跨域请求数据 主域相同而子域不同 不同域名的跨域访问 什么是跨域? 简单地理解就是因 ...
随机推荐
- 使用Windows任务计划程序实现每天更换一张Processing创意桌面壁纸
Windows任务计划程序(Windows Task Scheduler)是Windows操作系统中的一项系统工具,它允许用户安排自动执行的任务.通过任务计划程序,用户可以设定特定的时间或条件来运行各 ...
- Web前端入门第3问:前端需要学习哪些技术?
Web前端开发技术学习路径 基础知识 必备 HTML+CSS+JavaScript ,就目前来看,这三板斧是入门前端开发的门槛,无论如何都是逃不掉了. 进阶知识 必须会一门主流的前端框架,比如:Rea ...
- 详细讲述了CPU的调度原理,本篇讲一下内存的分配过程。
运行在ESXi主机上的虚拟机分配内存之和可以超过物理机的实际内存大小,这个技术叫做超额分配(overcommitment),即使单个虚拟机的内存分配值都可以超分.但是超分的结果就是可能会引起内存资源竞 ...
- selinux中Enforcing, Permissive 和Disable这三种模式的区别
1.如果要马上拒绝运行SELinux:[root@localhost ~]# setenforce 0[root@localhost ~]# getenforcePermissive这条命令会把SEL ...
- elementui|dropdown|下拉菜单作为模态框使用
elementui|dropdown|下拉菜单作为模态框使用 背景 场景:下拉菜单作为模态框使用: 操作:下拉菜单设置触发条件点击展示/隐藏:trigger="click" 目的: ...
- ThreeJs-16智慧城市项目(重磅以及未来发展ai)
 项目源 ...
- BUUCTF---天干地址+甲子
题目 直接参考天干地支表作结,转ASCII flag{Goodjob}
- [源码系列:手写spring] IOC第六节:资源和资源加载器
主要内容 本节新增 Resource接口 定义对资源的抽象和访问,并且添加三个Resource接口的简单实现类. FileSystemResource 文件系统资源的实现类 ClassPathReso ...
- 面试题-Java多线程基础、实现工具和可见性保证(新更新版)
前言 Java多线程部分的题目,是我根据Java Guide的面试突击版本V3.0再整理出来的,其中,我选择了一些比较重要的问题,并重新做出相应回答,并添加了一些比较重要的问题,希望对大家起到一定的帮 ...
- 跨网段和局域网的SQL SERVER发布订阅配置图解和常见问题
非常详细,傻瓜式依葫芦画瓢即可. 特别提示:订阅机器上的防火墙以及发布机器远程登录订阅机的问题 通过非命令行方式配置同步订阅 (1)实验环境说明 (2)实验前准备 (3)订阅设置 (4)测试同步订阅 ...