3

私が使用したJavaScriptから:

xhr.setRequestHeader("Authorization", make_base_auth(username,password));

Authorizationただし、HTTP 要求にはヘッダーがありません。

OPTIONS /restService/index?_=1362589672203 HTTP/1.1
Host: myappinheroku.herokuapp.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-MX,es-ES;q=0.8,es-AR;q=0.7,es;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Origin: http://127.0.0.1:8081
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization,content-type
Connection: keep-alive

認証は完全に無視されているようです。なにが問題ですか?CORS の認証を有効にするにはどうすればよいですか?


これは、上記の要求に対するサーバーの応答です。

HTTP/1.1 401 Full authentication is required to access this resource
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: origin, authorization, accept, content-type, x-requested-    with
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3600
Server: Jetty(7.x.y-SNAPSHOT)
Set-Cookie: JSESSIONID=6smxjnlqelmc1lg98ain16wv7;Path=/
WWW-Authenticate: Basic realm="Ralph's Bait and Tackle"
Transfer-Encoding: chunked
Connection: keep-alive
4

1 に答える 1

7

がの場合、値はヘッダーに*使用できません。Origin 自体の値を設定する必要があります (つまり、この場合)。Access-Control-Allow-OriginAccess-Control-Allow-CredentialstrueAccess-Control-Allow-Originhttp://127.0.0.1:8081

また、プリフライト リクエストでは認証資格情報が送信されないことにも注意してください。それらは実際の要求でのみ送信されます。プリフライトは、CORS リクエストが許可されていることを確認するためにのみ使用され、認証自体を行うべきではありません。

于 2013-03-06T17:34:56.153 に答える