ajax 跨域访问

本文讲述了在没有源代码的情况下,如何处理从一个网站A通过Ajax调用另一个网站B的XML接口进行登录的跨域问题。尝试了jsonp但因接口返回XML而不可行。通过分析B网站的登录JS代码,找到了所需参数。在B网站的web.config中进行相应配置,解决了跨域错误,实现了Ajax POST请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 要实现一个功能从一个网站A上跳转到另一个网站B 并且实现B网站登录。

2.  网上百度了下,ajax跨域访问 比较好的方法是使用jsonp,但是由于另一个网站接口返回的是xml格式,而且手上没有源代码,所以只能自己捣腾。

3.  首先查看B网站的登录界面的js代码,找到登录所用的格式参数什么的。(手头上有B网站的前台代码,asp.net mvc)

4. 写一个基本的ajax post 代码。点击按钮就会提交,发现没反应,然后f12 发现下面的错误

5. 百度了一下最后发现要在B网站的web.config 下添加如下:

<httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="Content-Type" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
        </customHeaders>
    </httpProtocol>
    <handlers>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <remove name="OPTIONSVerbHandler" />
        <remove name="TRACEVerbHandler" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
6. 再次点击,可以跳转到B网站的登录后的界面,但是提示登录失败,又跳回到登录界面。猜测可能是因为cookie没传过去。

7. 上网查找资料,最终web.config添加内容修改如下:

<httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Credentials" value="true" />
            <add name="Access-Control-Allow-Origin" value="http://localhost:8004" /><!-- 这里要写入A网站的地址,否则会出错 --!>
            <add name="Access-Control-Allow-Headers" value="Content-Type" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
        </customHeaders>
    </httpProtocol>
    <handlers>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <remove name="OPTIONSVerbHandler" />
        <remove name="TRACEVerbHandler" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
8. 重新运行,发现还是不能登录成功,f12查看cookie 已经带过来了,没办法,用B的登录界面登录,查看所有需要的cookie,发现少了几个,将这几个cookie 加入后,成功登录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值