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

152 天前
 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/ajax-hook@2.0.3/dist/ajaxhook.min.js
// @require      https://cdn.jsdelivr.net/npm/axios@1.6.2/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);
          }
        }
    })
})();
718 次点击
所在节点    Chrome
3 条回复
yin1999
152 天前
本地的 HTTP 服务器上面配置一下预检请求( OPTIONS )和 POST 请求的响应标头(主要是 Access-Control-Request-Method 和 Access-Control-Allow-Origin 这两个标头)。如果你无法配置用到的 HTTP 服务器的,那就另起一个本地的 HTTP 代理来转发请求。

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS
falcon05
152 天前
我记得 chrome 里的扩展有可以跨域的 API ,不要用浏览器那个 xhr ,用油猴的 GM_xmlhttpRequest() 试试。
id4alex
152 天前
@yin1999 ,感谢回复。 用 nodejs 挂了个代理测试了下,确实 OK 了, 点赞!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/999140

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX