nodejs做http请求转发,解决js跨域问题(二)

JavaScript022

nodejs做http请求转发,解决js跨域问题(二),第1张

上篇讲了 nodejs做http请求转发,解决js跨域问题(二)

现在遇到一个问题,公司的服务器防火墙针对User-Agent做了拦截。需要特定的User-Agent才能访问到API接口

如果用上篇的方法js的ajax请求目前在很多浏览器中是无法修改User-Agent,这样的话导致api请求可能无法成功。

我们可以在nodejs这一层加入请求修改User-Agent,不仅仅可以在nodejs这一层代理修改User-Agent,还可以修改request和response

例如

下面就修改了request的headers 添加了mytest=0000000000000和User-Agent= mytest

也修改了request里面的body给body添加了 Type : 'jpg' 以及修改了 FileName : '2.jpg'

一定要注意如果修改了 request 的 body 值一定要重新设置 Content-Length

response原本是返回一个json {"ID":"1234567890","Name":"张三"} ,也把这个json改了,改成 {"ID":"1234567890","Age":2}

这个问题问的很不明确,只能进行猜测。

跨域的问题,对于老手而言,不是问题,那么我猜你应该是本地开发遇见了问题,因为在本地浏览器的开发可能会因为浏览器的安全策略遇见跨域问题。

最简单的方法去把对应的包下载下来本地调用,你可以直接去官网或者是 GitHub 上下载。

如果是 Chrome 浏览器解除跨域限制的话:

先新建一个目录,例如:C:\MyChromeDevUserData

再新建一个 chrome 浏览器的快捷方式,推荐取名为“chrome-debug”作为区分,右击它然后在属性页面中的目标输入框里加上 --disable-web-security --user-data-dir=C:\MyChromeDevUserData,这里--user-data-dir 的值就是刚才新建的目录。

点击应用和确定后关闭属性页面,并打开chrome浏览器。再次打开chrome,发现有“--disable-web-security”相关的提示,说明chrome又能正常跨域工作了。

跨域成功后,而稍微想一想, C:\MyChromeDevUserData 其实就是新建一个新的用户目录,然后你使用这个解除了安全限制的新用户去进行开发,但注意不要用来上网。

如果是 Firefox 浏览器解除跨域限制的话:

地址栏输入 about:config

将 security.fileuri.strict_origin_policy 改为 false

将 security.mixed_content.block_active_content 改为 false

注:浏览器可能会对自己的安全策略升级,我只能保证第一种和第二种方法都是近期可用的。

其次,比较小的可能是想知道如何进行跨域,这种方法就超多,而且写太长也不好,我只推荐你自己去 MDN 网上面去搜索“跨域”。