在angular js中添加标头时,HTTP GET请求更改为OPTIONS
HTTP GET request changes into OPTIONS while adding headers in angular js
以下是我迄今为止使用的请求
$http.get(url)
.success(function (data){})
.error(function (data){})
工作时没有任何CORS问题。我的服务器端允许所有来源、方法、所有头
当我添加类似的http头时
$http.get(url, { headers: { "USERID": user, "SESSIONID": sessionId}})
当我在chrome dev工具的网络选项卡中看到时,请求变为OPTIONS方法
这是什么原因?如果是预期的,那么如何添加自定义http头。
我已经浏览了这个链接angularjs-performs--options-http-request-for-a-cross-origin-resource,但它对没有帮助
在这里,我期望服务器应该允许不同的来源。但它允许使用头,前提是我在同一台服务器上。但不确定这是角度还是服务器端。
标题后
$http.get(url,{headers:{"USERID":user,"SESSIONID":SESSIONID}}(
在chrome开发工具中,我看到了类似的
Request Method:OPTIONS
Status Code:404 Not Found
但没有标题
Request Method:GET
Status Code:200 OK
当我在REST客户端中这样做时,我可以将头发送到后端。
$http({method: 'GET', url: '/someUrl', headers: { "USERID": user, "SESSIONID": sessionId}}).
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
将起作用。$http.get是一种快捷方式。检查文档中的config
这是一个已知的错误,例如请参阅https://github.com/angular/angular.js/issues/1585。
解决方法是使用jQuery请求。
当我试图在get中传递header时,遇到了同样的巨大问题,它将get更改为选项,无法工作。为了使它发挥作用,我在php-api中添加了以下内容
<?php if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']) && $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] == 'GET') {
header("Access-Control-Allow-Headers: Authorization, X-Auth-Token");
}
exit;
} ?>
您可以允许任何您希望传递的标头。希望这能帮助
对于我的C#Web API解决方案的特殊问题,我必须处理Options请求。Angular发送了一个飞行前请求方法OPTIONS,我在使用的web.config中允许了这个方法
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS, PATCH" />
但这还不够,我还包括了一个处理选项请求的方法,我没有返回任何
[ResponseType( typeof( void ) )]
public IHttpActionResult OptionsPost() {
return StatusCode( HttpStatusCode.NoContent );
}
- 有没有一种方法可以防止img get请求使用css或js发生
- jQuery Ajax GET请求工作不正常
- Angularjs http.get() Cross-Origin 请求被阻止
- 将GET请求(HTML字符串)转换为完整的DOM对象
- 如何在nightwatch.js中发送ajax get请求
- 当我在chrome中切换设备模式时,$http.get请求失败
- 根据GET请求的结果自定义页面内容
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Codeigniter JQuery在JQuery.get请求后动态加载视图中的数据
- 错误Jquery.$.get()请求
- 如果我对一个文件发出ajax GET请求,我会得到什么以及如何将其添加到页面中
- JQuery AJAX 在 GET 请求完成时返回 XML
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]
- 嵌套在 .get 请求中的 jQuery 不会执行
- 如何在 GET 请求中序列化查询的对象
- Angular 2:如何在 GET 和 POST 请求中设置 double、float、int 和布尔类型参数
- Jquery.ajax 请求 'Get' to Web API 2 后端不起作用
- 我如何使用NodeJs请求GET模块发送cookie
- 错误的错误.GrailsExceptionResolver -在处理请求:[GET]时发生NullPointerExce
- Angular js $http请求 get 失败