chrome api 请求结果转发到外部 api 接口上跨域问题

查看 53|回复 2
作者:id4alex   
使用油猴脚本,安装本地,想把某个数据接口转发到 localhost 的服务上,但是转发时候会有跨域问题,有解决方法吗?
// ==UserScript==
// @name         iwencai api 拦截
// @namespace    http://tampermonkey.net/
// @description  使用 ajaxhook , 拦截全局网络请求.
// @version      0.1
// @author       Plzbefat
// @match        #target match#
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/ajaxhook.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js
// @grant        none
// @downloadURL https://update.greasyfork.org/scripts/432519/js%E6%8B%A6%E6%88%AA%E5%85%A8%E5%B1%80%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82.user.js
// @updateURL https://update.greasyfork.org/scripts/432519/js%E6%8B%A6%E6%88%AA%E5%85%A8%E5%B1%80%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82.meta.js
// ==/UserScript==
(function() {
    'use strict';
    ah.proxy({
        //请求发起前进入
        onRequest: (config, handler) => {
            //console.log("发生请求,请求地址:"+config.url)
            handler.next(config);
        },
        //请求发生错误时进入,比如超时;注意,不包括 http 状态码错误,如 404 仍然会认为请求成功
        onError: (err, handler) => {
            //console.log("发生错误,错误信息:"+err.type)
            handler.next(err)
        },
        //请求成功后进入
        onResponse: (response, handler) => {
          if(response.config.url == '#target url#'){
             console.log("请求成功,反馈信息:"+response.response)
             handler.next(response)
                axios.post('http://localhost:8080/test',response.response);
          }
        }
    })
})();

请求, handler, err, config

yin1999   
本地的 HTTP 服务器上面配置一下预检请求( OPTIONS )和 POST 请求的响应标头(主要是 Access-Control-Request-Method 和 Access-Control-Allow-Origin 这两个标头)。如果你无法配置用到的 HTTP 服务器的,那就另起一个本地的 HTTP 代理来转发请求。
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS
falcon05   
我记得 chrome 里的扩展有可以跨域的 API ,不要用浏览器那个 xhr ,用油猴的 GM_xmlhttpRequest() 试试。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部