Ajax跨域请求

一,前台解决

   利用jsonp,不过只能发生get请求

 

二,后台解决

 

  设置响应头

  response.setHeader(".......", ".......”);

1.Access-Control-Allow-Origin

返回的资源需要有一个Access-Control-Allow-Origin头信息,语法如下:

Access-Control-Allow-Origin:<orign> | *

origin参数指定一个允许向该服务器提交请求的URL。对于一个不带有credentials的请求,可以指定为‘*’,表示允许来自所有域的请求。

举个例子,允许来自http://baidu.com的请求,你可以这样指定:

Access-Control-Allow-Origin: http://baidu.com

如果服务器端指定了域名,而不是‘*’,那么响应头的Vary值里必须包含Origin。它告诉客户端:响应是根据请求头里的Origin的值来返回不同的内容的。

2.Access-Control-Expose-Headers

设置浏览器允许访问的服务器的头信息的白名单:

Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header

这样,X-My-Custom-Header和X-Another-Custom-Header这两个头信息,都可以被浏览器得到。

3.Access-Control-Max-Age

这个头告诉我们这次预请求的结果的有效期是多久,如下:

Access-Control-Max-Age:<delta-seconds>

delta-seconds参数表示,允许这个预请求的参数缓存的描述,在此期间,不用发出另一条预检请求。

4.Access-Control-Allow-Credentials

告知客户端,当请求的credentials属性是true的时候,响应是否可以被得到。当它作为预请求的响应的一部分时,它用来告知实际的请求是否使用了credentials。注意简单的GET请求不会预检,所以如果一个请求是为了得到一个带有credentials的资源,而响应里又没有Access-Control-Allow-Credentials头信息,那么说明这个响应被忽略了。

Access-Control-Allow-Credentials:true | false

5.Access-Control-Allow-Methods

指明资源可以被请求的方式有哪些(一个或多个)。这个响应头信息在客户端发出预检请求的时候会被返回。

Access-Control-Allow-Methods: <method>[, <method>]*(POST, PUT, GET, OPTIONS, DELETE)

发出预检请求的例子见上,这个例子里就有向客户端发送Access-Control-Allow-Methods响应头信息。

6.Access-Control-Allow-Headers

也是在响应预检请求的时候使用。用来指明在实际的请求中,可以使用哪些自定义HTTP请求头。比如

Access-Control-Allow-Headers:X-PINGOTHER  (Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization)

可以有多个自定义HTTP请求头,用逗号分隔:

Access-Control-Allow-Headers:<field-name>[, <field-name>]*

 

 

转载于:https://www.cnblogs.com/Mr-yangyu/p/7827707.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值