jQuery ajax 发出两个请求的基本身份验证
Basic authentication with jQuery ajax making two requests
我正在尝试使用基本身份验证调用 ajax 请求,
为此,我添加了以下代码,
url: appSettings.dataURL+'/app/signature',
type: 'GET',
crossDomain: true,
dataType: 'html',
context : this,
cache : true,
headers: {"Authorization": "Basic " + btoa('username' + ":" + 'password')}
当我使用网络选项卡检查时,这将发出两个请求,一个带有身份验证,另一个没有身份验证。为什么?
查看屏幕截图,
是否可以避免这种情况?
注意:这种情况只发生在跨域请求中。
Cross-site 请求遵循特定的安全规则。如果设置的唯一自定义 header 是 simple,则可以发出单个请求:
- 接受
- Accept-Language
- Content-Language
- Content-Type
并且内容类型是以下之一:
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
您正在发送 Authorization
header 并请求 HTML,因此默认情况下需要 "pre-flight request":
Unlike simple requests, "preflighted" requests first send an HTTP request by the OPTIONS method to the resource on the other domain, in order to determine whether the actual request is safe to send. Cross-site requests are preflighted like this since they may have implications to user data.
没有 Authorization
的初始 OPTIONS
请求是安全的,因为服务器只需要响应 Access-Control-*
header 让浏览器知道您的完整请求是否是确定继续。然后你对 Authorization
的实际请求正在处理,所以一切都按预期工作。
XMLHttpRequest object 确实允许您指定您是 sending a request with credentials 并可能切换到一个请求:
xhrFields: { withCredentials: true }
我正在尝试使用基本身份验证调用 ajax 请求, 为此,我添加了以下代码,
url: appSettings.dataURL+'/app/signature',
type: 'GET',
crossDomain: true,
dataType: 'html',
context : this,
cache : true,
headers: {"Authorization": "Basic " + btoa('username' + ":" + 'password')}
当我使用网络选项卡检查时,这将发出两个请求,一个带有身份验证,另一个没有身份验证。为什么?
查看屏幕截图,
是否可以避免这种情况?
注意:这种情况只发生在跨域请求中。
Cross-site 请求遵循特定的安全规则。如果设置的唯一自定义 header 是 simple,则可以发出单个请求:
- 接受
- Accept-Language
- Content-Language
- Content-Type
并且内容类型是以下之一:
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
您正在发送 Authorization
header 并请求 HTML,因此默认情况下需要 "pre-flight request":
Unlike simple requests, "preflighted" requests first send an HTTP request by the OPTIONS method to the resource on the other domain, in order to determine whether the actual request is safe to send. Cross-site requests are preflighted like this since they may have implications to user data.
没有 Authorization
的初始 OPTIONS
请求是安全的,因为服务器只需要响应 Access-Control-*
header 让浏览器知道您的完整请求是否是确定继续。然后你对 Authorization
的实际请求正在处理,所以一切都按预期工作。
XMLHttpRequest object 确实允许您指定您是 sending a request with credentials 并可能切换到一个请求:
xhrFields: { withCredentials: true }