我有一个用php实现的用于登录验证的api:
http://somerestsertver.net/sampleapi/auth-login这将设置登录会话id(例如,在验证用户凭据之后)
http://somerestsertver.net/sampleapi/auth-check如果会话id已设置或未设置,则会检查登录是否有效
http://somerestsertver.net/sampleapi/auth-logout这会破坏会话并需要注销。。。
在代码中进行身份验证登录时,我将登录设置为$_SESSION["id"]=1那么auht检查就可以了,否则auth检查将包含错误。
当我在浏览器或ReST客户端中调用这些URL时,但是在我的angularJS代码中使用它们会返回错误http://somerestsertver.net/sampleapi/auth-check!
会话集似乎无法通过客户端中的PHPSESSID使用,并且工作不正常它与沙盒、CORS或html头请求有关吗?
嗨,我终于这样解决了问题:
客户端,在angularJS中,我将其放在我的路由配置中,以申请ReST-API 的所有请求
$httpProvider.defaults.withCredentials = true;
我想我应该主要在.htaccess中使用web服务器:
Header add Access-Control-Allow-Credentials "true"
但为了引起你的注意,我最终更新了整个.htaccess文件如下:
Header add Access-Control-Allow-Origin "http://localhost:3000"
Header add Access-Control-Allow-Credentials "true"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "GET, POST"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
<FilesMatch ".php$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch "index[0-9]?.php$">
Order Allow,Deny
Allow from all
</FilesMatch>
我还在php中使用以下JSON响应:$response="所需的JSON响应OBJECT";$status="OK或未经身份验证或…";$status='200或403或…';header("内容类型:application/json");标头("HTTP/1.1$status$sessage");echo json_encode($response);exit();
希望这个问题和答案能帮助你