我正试图用
jquery购买执行CORS请求我得到了奇怪的行为.当我使用curl执行请求时,一切正常.但是当我使用jQuery时,事情发生了可怕的错误.在我的浏览器的“网络”选项卡中,我可以检查请求和来自后端的响应那里一切都是正确的
但是虽然我有Access-Control-Expose-Headers:Set-Cookie标头当我尝试时我得到null使用console.log打印出来(response.getResponseHeader(“Set-Cookie”));当我尝试使用console.log(response.getAllResponseHeaders())在控制台中打印出我的ajax请求的响应头时,我只得到这3个头:
Pragma: no-cache Cache-Control: no-cache,no-store,max-age=0,must-revalidate Expires: 0
我用来执行请求的代码是:
$.ajax({ method: "POST",url: "http://localhost:8808/storage/login",data: { username: email,password: password,},success: function(data,textStatus,response){ console.log(response.getAllResponseHeaders()); console.log(response.getResponseHeader("Set-Cookie")); this.setState({showAlert: true,alertMessage: "You are logged in.",alertType: "success"}); }.bind(this),error: function (xhr,status,err) { this.setState({showAlert: true,alertMessage: "Wrong email or password",alertType: "danger"}); }.bind(this) });
解决方法
您是在提出跨域请求吗?
http://www.html5rocks.com/en/tutorials/cors/:
During a CORS request,the getResponseHeader() method can only access
simple response headers. Simple response headers are defined as
follows:
- Cache-Control
- Content-Language
- Content-Type
- Expires
- Last-Modified
- Pragma
If you want clients to be able to access other headers,you have to use the Access-Control-Expose-Headers header. The value of this header is a comma-delimited list of response headers you want to expose to the client.