Apache Web 服务器允许 XSS/CORs,我可以使用查询字符串参数成功地进行调用。
我被告知的 RESTful 服务使用 OAuth。
Fiddler 通过 Composer 调用 RESTful Web 服务很简单,并返回有效的 JSON 数据。我设置了一个 Authorization 标头,但是在 Fiddler Composer 中发送的请求与在 Ajax 中设置标头时看起来完全不同。
我尝试过使用和不使用 Accept 和 Access-Control-Allow-Origin 标头。
这是 Fiddler 在 Composer 中执行请求后的请求头。
GET {/trailing server URL} HTTP/1.1
Cookies / Login
Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Transport
Host: {server URL}
这是我的 Ajax 请求
$(function () {
var token = "Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
$.ajax({
url: url,
dataType: "json",
headers: {
"Access-Control-Allow-Origin": "*", Accept: "application/json", Authorization: token
}
//,
//beforeSend: function (jqXHR) {
//jqXHR.setRequestHeader("Access-Control-Allow-Origin", "*");
//jqXHR.setRequestHeader("Accept", "application/json");
//jqXHR.setRequestHeader("Authorization", token);
//}
})
.success(function (data) {
console.log("success");
})
.fail(function (jqxhr, textStatus, error) {
console.log("Error - textStatus = " + textStatus + " , error = " + error);
});
});
这是通过 Fiddler 从我的 Ajax 浏览器请求中捕获的 HTTP 请求标头
OPTIONS {trailing server URL} HTTP/1.1
Client
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Cookies / Login
DNT: 1
Miscellaneous
Access-Control-Request-Headers: access-control-allow-origin,authorization
Access-Control-Request-Method: GET
Origin: {local machine URL}
Transport
Connection: keep-alive
Host: {server URL}
为什么 AJAX 请求标头显示“OPTIONS”而不是像 Fiddler Composer 标头那样显示“GET”?
为什么 Fiddler Composer 标头在 Cookies / Login 部分下显示 Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 值?
我听说我不应该将令牌保留在 JavaScript 代码中,因为它可以在浏览器中查看(实际上,令牌不会被硬编码,而是作为变量传递)。我将如何传递令牌并确保其安全?