- 主题:js菜鸟请教一个跨域访问的问题
最近在用油猴做一个小工具,在页面加载的时候添加按钮,每个按钮的onclick的函数也是油猴脚本注入的。这个按钮响应函数里面通过get将当前页面的一些信息,递交到另一个服务器上。现在的结果是另一个服务器收到了get请求,但是当前页面没有接收到返回数据,而且控制台有拒绝跨域访问的错误。
作为初学者的理解,按钮响应函数是运行在本地浏览器中,而且是向第三方服务器请求,和原页面服务器没有关系,为什么会被拒绝?而且如果拒绝了,为什么请求还是出去了
--来自微水木3.5.1
--
FROM 115.193.164.*
你请求目标和所在页面不在一个域。
跨域请求会被发出,服务器会根据协议给你回应拒绝或不拒绝。
【 在 zjuerkzhang (kzhang) 的大作中提到: 】
: 最近在用油猴做一个小工具,在页面加载的时候添加按钮,每个按钮的onclick的函数也是油猴脚本注入的。这个按钮响应函数里面通过get将当前页面的一些信息,递交到另一个服务器上。现在的结果是另一个服务器收到了get请求,但是当前页面没有接收到返回数据,而且控制台有拒绝跨域访问的错误。
: 作为初学者的理解,按钮响应函数是运行在本地浏览器中,而且是向第三方服务器请求,和原页面服务器没有关系,为什么会被拒绝?而且如果拒绝了,为什么请求还是出去了
: --来自微水木3.5.1
--
FROM 183.95.135.*
我的意思是浏览器里页面中的js用xmlhttprequest去跨域get,难道也要到当前页面对应的服务器上走一圈吗?
【 在 a0123456789q 的大作中提到: 】
: 你请求目标和所在页面不在一个域。
: 跨域请求会被发出,服务器会根据协议给你回应拒绝或不拒绝。
:
: ...................
--来自微水木3.5.1
--
FROM 115.193.164.*
废话。要是页面里js能跨域,还有啥不能跨域的
【 在 zjuerkzhang (kzhang) 的大作中提到: 】
: 我的意思是浏览器里页面中的js用xmlhttprequest去跨域get,难道也要到当前页面对应的服务器上走一圈吗?
: --来自微水木3.5.1
--
FROM 183.95.135.*
跨域限制是浏览器和服务端的双重限制,目的是限制页面中的脚本访问其他网站的资源或接口。一个典型的例子:你先登陆了你的工行网站,然后你再访问了一个恶意网页,这个恶意网页中有一个脚本去调用了工行网站的转账接口,然后你的钱就被转走了。这就是所谓的“跨站脚本攻击”。
所以浏览器默认会阻止跨域请求,除非服务端明确表示允许跨域访问。(对于简单的 GET 请求,浏览器会将这个请求发送出去,服务端返回响应时如果不在 Headers 中设置 Access-Control-Allow-Origin 的话,即便服务端正常返回数据,浏览器收到响应后仍然会报错)
如果需要在页面中调用第三方网站的接口,只有以下两种方法:
1. 第三方网站的后台设置允许跨域;
2. 架设反向代理服务器,此服务器设置允许跨域,并将请求转发到第三方网站,然后在页面中访问反向代理服务器。
--
修改:missmary FROM 58.101.147.*
FROM 58.101.147.*
如果你这个小工具中需要访问的服务器是你自己搭设的话,只要设置一下允许跨域就行了,不同语言和框架有不同的设置方法,查一下相关的文档就可以了。
--
FROM 58.101.147.*
用nginx代理一下,4行配置项而已。
--
FROM 117.136.0.*
这个解释可以
【 在 missmary 的大作中提到: 】
:
: 跨域限制是浏览器和服务端的双重限制,目的是限制页面中的脚本访问其他网站的资源或接口。一个典型的例子:你先登陆了你的工行网站,然后你再访问了一个恶意网页,这个恶意网页中有一个脚本去调用了工行网站的转账接口,然后你的钱就被转走了。这就是所谓的“跨站脚本攻击”。
:
: 所以浏览器默认会
: ..................
发自「今日水木 on iPhone XS」
--
FROM 58.247.69.*