Javascript跨域和Ajax跨域解决方案总结

1.什么引起了ajax跨域不能的问题
ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告或者直接不执行。

例如A网址通过js请求B网址内容,通过浏览器检测,出现下面错误,就表示浏览器禁止跨域请求

2.有什么完美的解决方案么?
暂时没有。解决方案有不少,但是只能是根据自己的实际情况来选择。

网上的方法很多,可以百度下,下面是我的方法
①、A网址将ajax请求到本域名下的控制器,然后在本域名下的控制器,例如php的file_get_contents或者curl请求外部B网站url数据,然后返回给自己域名下的JS

②、使用jquery ajax数据类型改为 dataType : 'jsonp';具体用法自行百度JSONP就不一一阐述了。我自己将这个项目用在了微信轮播项目中

③、如果B网站是自己的,那么只需修改服务器配置,下面举例说明IIS设置跨域

打开IIS控制面板,找到域名下的“HTTP响应标头”

打开http响应头,分别添加下面2个参数

Access-Control-Allow-Headers:Content-Type, api_key, Authorization

Access-Control-Allow-Origin:*

完成后如下图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第8代码农师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值