如何解决js跨域问题

JavaScript022

如何解决js跨域问题,第1张

js跨域解决方法:

使用jsonp方式跨域,支持GET,不支持POST

服务器端一个跨域头,使用CORS方式进行跨域

iframe通过参数或hash跨域

postMessage跨域

其他方式

XMLHttpRequest2 进行跨域访问时需要服务器许可,不是任何域都接受跨域请求的。先来看一下从 Yahoo YQL 域返回的响应头(Response Header ):

HTTP/1.1 200 OK

Set-Cookie: AO="o=1&s=1&dnt=1" Version=1 Domain=yahoo.com Max-Age=630720000 Expires=Sat, 18-Jun-2033 10:07:41 GMT Path=/

Access-Control-Allow-Origin: *

Cache-Control: public, max-age=899

Content-Type: text/xmlcharset=utf-8

Content-Encoding: gzip

Vary: Accept-Encoding

Date: Sun, 23 Jun 2013 10:07:40 GMT

注意里面有一条标识 Access-Control-Allow-Origin:* ,这就表示允许跨域访问,所以可以正常访问该域,而对于其他没有该标识的域就会出现禁止访问提示。

那么如何设置呢?如果要接受跨域访问请求,就必须在服务器端返回的资源中加入 Access-Control-Allow-Origin 头标识, Access-Control-Allow-Origin 的值可以是 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求。比如,在 HTML 中可以设置:

<meta http-equiv="Access-Control-Allow-Origin" content="*">

<meta http-equiv="Access-Control-Allow-Origin" content="http://www.baidu.com:80">

前端跨域的解决方法非常的多,简单的给你介绍一下吧。

iframe解决跨域,这种方法也比较常见

JSONP解决跨域,简单,易上手

postMessage解决跨域,使用了比较新H5 API,所以存在一定的兼容问题;

服务器代由访问,方法对前端影响不大,但是后台相对会麻烦很多。

希望对您有帮助吧~~