扫码关注官方订阅号
jquery的请求如下:
angularjs的请求如下:
你仔细看下你的两个请求在request上的差异,我说的是content-type这个部分,jquery默认的content-type是application/x-www-form-urlencoded,是简单请求,不需要preflight(就是第二张图里的options请求)。而angular默认的post请求的content-type是application/json,这是复杂请求,主要进行preflight,但你既然碰到错误了,就说明你的后端并没有处理options情况,两个解决办法:
手动给你的angular resource服务设置header,将content-type改成application/x-www-form-urlencoded。(不确定resources是否可以自定义header,因为resources其实是标准restful服务)
要求你的后端程序做相应修改,使之能够处理复杂请求(实际是非常小的改动,无论java, python还是ruby on rails都有现成的解决方案)
你注意看 你用jquery发送请求的时候,响应的Response Headers设置了 Access-Control-Allow-Origin,因此你可以跨域; 但是你用Angular发送的时候这个头没有,应该是你服务器端响应的逻辑做了什么判断,导致这个头没有正常设置。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你仔细看下你的两个请求在request上的差异,我说的是content-type这个部分,jquery默认的content-type是application/x-www-form-urlencoded,是简单请求,不需要preflight(就是第二张图里的options请求)。而angular默认的post请求的content-type是application/json,这是复杂请求,主要进行preflight,但你既然碰到错误了,就说明你的后端并没有处理options情况,两个解决办法:
手动给你的angular resource服务设置header,将content-type改成application/x-www-form-urlencoded。(不确定resources是否可以自定义header,因为resources其实是标准restful服务)
要求你的后端程序做相应修改,使之能够处理复杂请求(实际是非常小的改动,无论java, python还是ruby on rails都有现成的解决方案)
你注意看 你用jquery发送请求的时候,响应的Response Headers设置了 Access-Control-Allow-Origin,因此你可以跨域;
但是你用Angular发送的时候这个头没有,应该是你服务器端响应的逻辑做了什么判断,导致这个头没有正常设置。