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跨域解决办法
在找到跨域解决办法之前,我们要先弄清楚一些基本概念 什么是跨域? 什么是“同源策略”? 跨文档消息通信 & 跨域请求数据 主域相同而子域不同 不同域名的跨域访问 什么是跨域? 简单地理解就是因 ...
随机推荐
- 震惊!AI 编程竟然让程序员 “失业” 了?真相让人意外
在科技飞速发展的当下,AI 编程的异军突起无疑成为了整个编程领域乃至社会各界热议的焦点. 去年,全球首个AI程序员Devin横空出世,不仅能独立完成代码开发.修复Bug,甚至能通过阅读技术文档自主学习 ...
- 【vscode】vscode配置Java
[vscode]vscode配置Java 前言 配环境,需要记录,避免反复踩坑. 步骤 step1:官网走 配环境为什么不直接上官网教程,Visual Studio Code - Co ...
- 快速排序(NB)
博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def partition(li, left, right): tmp = li ...
- StringBuilder的介绍、构造方法及成员方法
1.StringBuilder的介绍 1.StringBuilder是字符串缓冲区,可以认为是一种容器,能装任何类型的数据,但被装入的数据都会变为字符串 如图 无论是什么类型的数据,被装入字符串缓冲区 ...
- 【Java】Math类的基本操作
Math类 Math 类是数学操作类,提供了一系列的数学操作方法,包括求绝对值.三角函数等,在 Math 类中提供的一切方法都是静态方法(类方法),所以直接由类名称调用即可. Math类的基本操作: ...
- 征婚 SQL
[男]程序员是这么征婚滴 SELECT * FROM 女人们 WHERE 未婚=true AND Gay=false AND 处女=true AND 有魅力 =true AND 条件 IN (漂亮 ...
- TCP延迟调优之PSH参数与passt延迟问题修复
qemu中使用passt来作为虚拟机的网卡NAT实现,希望能够利用它IP地址与host一致的优点.这本来是没有啥问题的,但是不知道为什么它的TCP入口流量的延迟很严重. 好吧,反正以后总是要改pass ...
- 🎀idea import配置
简介 本文记录idea中import相关配置:自动导入依赖.自动删除无用依赖.避免自动导入*包 自动导入依赖 在编辑代码时,当只有一个具有匹配名称的可导入声明时,会自动添加导入 File -> ...
- 一个神奇的JS代码,让浏览器在新的空白标签页运行我们 HTML 代码(createObjectURL 的妙用)
前言 目前,网上很多在线运行 HTML 的页面,大都是这样的逻辑: 上面一个代码框 <textera> ,下面一个 <iframe>,然后通过 js,将我们的代码框中的 HTM ...
- 解决MySQL数据库中1045错误[1045 Access denied for user 'root'@'localhost' (using password:YES)]
数据库连接异常 1045 Access denied for user 'root'@'localhost' (using password:YES) 这种问题的本质是用户密码出现错误 解决方案 1. ...