http - CORS 和 HTTP 基本身份验证

标签 http web-applications cors basic-authentication asp.net-web-api

如果包含基本身份验证,预检 HTTP 请求会是什么样子?喜欢下面的对话吗?我很难理解哪些 header 需要发送到哪里,还因为无法使用 Firebug 正确调试它

客户:

OPTIONS /api/resource HTTP/1.1
Access-Control-Request-Method: GET
Origin: http://jsconsole.com

服务器:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, DELETE
Access-Control-Allow-Headers: Authorization
Access-Control-Max-Age: 1728000
Access-Control-Allow-Credentials: true

客户:

GET /api/resource HTTP/1.1
Access-Control-Request-Method: GET
Access-Control-Allow-Credentials: true
Origin: http://jsconsole.com

服务器:

HTTP/1.1 401 Unauthorized
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, DELETE
Access-Control-Allow-Headers: Authorization
Access-Control-Max-Age: 1728000
Access-Control-Allow-Credentials: true
WWW-Authenticate: Basic realm="Authorisation Required"

客户:

GET /api/resource HTTP/1.1
Access-Control-Allow-Credentials: true
Authorization: Basic base64encodedUserAndPassword
Access-Control-Request-Method: GET
Origin: http://jsconsole.com

服务器:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, DELETE
Access-Control-Allow-Headers: Authorization
Access-Control-Max-Age: 1728000
Access-Control-Allow-Credentials: true

最佳答案

如果您请求凭据,则服务器必须在 Access-Control-Allow-Origin 响应 header 中使用特定来源进行响应(因此不能使用通配符 *)。当然,它也需要使用 Access-Control-Allow-Credentials 响应 header 进行响应。

关于http - CORS 和 HTTP 基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499465/

相关文章:

ruby - 哪个 Ruby Web 服务器?

java - 获取当前动态web项目JAVA的路径

angularjs - 如何配置JIRA API以允许跨域HTTP请求

java - Google App Engine 和 CORS

c# - 重现问题 : The http request was forbidden with client authentication scheme 'anonymous'

asp.net - 为什么我的页面没有被缓存?

php - HTTP Post 将 € 转换为 ?象征

php - 如何重定向到 php 中的另一个页面 mySql 数据库?

jsp - 如何区分浏览器选项卡中的 session ?

laravel-5 - 使用 Laravel 5、CORS 和 JWTAuth 读取 JWT token 的授权 header