我正在运行以下程序.但我得到以下错误消息.401****401****(继续重复)
代码(来自某个论坛)基本上尝试连接到Twitter并获取推文.当它在ubuntu终端上运行时,会出现401错误消息.
import sys
import json
import pymongo
import tweepy
consumer_key="XX" ##all the keys and codes have to be strings
consumer_secret="XX"
access_token = "XX"
access_token_secret = "XX"
# This is the listener, resposible for receiving data
class StdOutListener(tweepy.StreamListener):
def on_data(self, data):
# Twitter returns data in JSON format - we need to decode it first
decoded = json.loads(data)
# Also, we convert UTF-8 to ASCII ignoring all bad characters sent by users
print '@%s: %s' % (decoded['user']['screen_name'], decoded['text'].encode('ascii', 'ignore'))
print …Run Code Online (Sandbox Code Playgroud) 我有一个保存在SQL2005报告服务器上的报告,我想返回此报告的呈现PDF.我在使用本地*.rdlc文件时已经想到了这一点(我已经在博客上发表过这篇文章),但是当*.rdl驻留在报表服务器上时却没有.我在线上收到401 Not Notized错误...
reportViewer.ServerReport.SetParameters(reportDefinition.ReportParameters);
Run Code Online (Sandbox Code Playgroud)
这是用于呈现报告的方法.
public byte[] Render(IReportDefinition reportDefinition)
{
var reportViewer = new ReportViewer();
byte[] renderedReport;
try
{
var credentials = new WindowsImpersonationCredentials();
reportViewer.ServerReport.ReportServerUrl = new Uri("http://myssrsbox", UrlKind.Absolute);
reportViewer.ServerReport.ReportServerCredentials = credentials;
reportViewer.ServerReport.ReportPath = reportDefinition.Path;
// Exception is thrown on the following line...
reportViewer.ServerReport.SetParameters(reportDefinition.ReportParameters);
string mimeType;
string encoding;
string filenameExtension;
string[] streams;
Warning[] warnings;
renderedReport = reportViewer.ServerReport.Render(reportDefinition.OutputType, reportDefinition.DeviceInfo, out mimeType, out encoding, out filenameExtension, out streams, out warnings);
}
catch (Exception ex)
{
// …Run Code Online (Sandbox Code Playgroud) 我在我的asp.net应用程序中使用WebBrowser控件来生成网页的屏幕截图.在更改应用程序池帐户之前,我能够生成图像.我给了新应用程序池所有必要的权限,我可以从IE浏览我的页面.但是当我以编程方式通过Web浏览器控件导航到它时,我得到的是401.2.我在我的IIS 7.0中设置了"失败的请求跟踪规则",并使用Fiddler来嗅探请求,我发现身份验证标头不正确.
但是webbrowser.navigate有一个重载方法,我们可以在其中传递自定义http标头.我怎么设置它?我只是想使用集成身份验证,并且不想在代码中提供用户名/密码,因为我可能不知道它.但我仍然尝试了以下代码,没有运气.
System.Uri uri = new Uri(myUrl);
byte[] authData = System.Text.UnicodeEncoding.UTF8.GetBytes("user: passwd");
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + "\r\n";
myBrowser.Navigate(uri, "", null, authHeader);
Run Code Online (Sandbox Code Playgroud)
有任何想法如何设置标题与其他细节,如useragent?
我试图验证https url,但我得到例外.下面是代码.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
public class Authenticate {
/**
* @param args
*/
public void authenticateUrl() {
HostnameVerifier hv = new HostnameVerifier() {
@Override
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: " + urlHostName
+ " vs. " + session.getPeerHost());
return true;
}
};
// Now you are telling the JRE to trust …Run Code Online (Sandbox Code Playgroud) 我正在为Java中的CouchDB编写REST客户端.以下代码应该是非常标准的:
this.httpCnt.connect();
Map<String, String> responseHeaders = new HashMap<>();
int i = 1;
while (true){
String headerKey = this.httpCnt.getHeaderFieldKey(i);
if (headerKey == null)
break;
responseHeaders.put(headerKey, this.httpCnt.getHeaderField(i));
i++;
}
InputStreamReader reader = new InputStreamReader(this.httpCnt.getInputStream());
StringBuilder responseBuilder = new StringBuilder();
char[] buffer = new char[1024];
while(true){
int noCharRead = reader.read(buffer);
if (noCharRead == -1){
reader.close();
break;
}
responseBuilder.append(buffer, 0, noCharRead);
}
Run Code Online (Sandbox Code Playgroud)
我想测试如果身份验证失败会发生什么.但是,如果身份验证失败,在调用getInputStreamHttpURLConnection时,我直接得到一个IOException,说服务器响应401.我想如果服务器响应某些东西,无论成功或失败,它应该能够读取服务器返回的任何内容.我确信在这种情况下服务器会返回正文中的一些文本,因为如果我GET使用curl对服务器执行操作并且身份验证失败,我会获得一个JSON对象作为响应正文,其中包含一些错误消息.
有没有办法仍然得到响应机构即使401?
在Eclipse IDE中测试时,我的代码成功运行.
我使用生成的Copy.wsdl通过Web服务连接到MS SharePoint 2010
当我在JBoss服务器上部署我的代码(运行Adobe LifeCycle)时,我的代码收到401错误.
错误:
Caused by: org.jboss.ws.WSException: Invalid HTTP server response [401] - Unauthorized
at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:75)
at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:608)
at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:402)
at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:253)
... 156 more
Run Code Online (Sandbox Code Playgroud)
现在,如果我故意通过IDE使用错误的登录,我会收到此错误:
com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized
Run Code Online (Sandbox Code Playgroud)
更新:
所以经过更多的研究后发现J2EE支持,缺乏,NTLM就是原因.我已经尝试了几种无法解决的解决方案.
码:
protected void initialize(String username, String password) throws Exception {
System.out.println("initialize()...");
java.net.CookieManager cm = new java.net.CookieManager();
java.net.CookieHandler.setDefault(cm);
Authenticator.setDefault(new SharepointAuthenticator(username, password));
}
Run Code Online (Sandbox Code Playgroud)
认证
public class SharepointAuthenticator extends Authenticator {
private String username = "";
private String password = "";
public …Run Code Online (Sandbox Code Playgroud) java jboss web-services sharepoint-2010 http-status-code-401
每当我尝试从我的api.php文件中分配路由时,我得到一个401: Unauthenticated-Error.
这是路线:
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function () {
Route::post('admin/product-image-sort', 'ApiController@SaveProductImageSort')->name('api.save-product-image-sort');
});
Run Code Online (Sandbox Code Playgroud)
我使用Jquery Ajax调用它:
<script>
$('#sortable-image-container').sortable({
items: '> .row > *',
update: function (event, ui) {
var data = $(this).sortable('serialize');
console.log(data);
$.ajax({
data: data,
type: 'POST',
url: "{{ route('api.save-product-image-sort') }}",
success: function (data) {
if(data == "success"){
$.notify({
icon: 'pe-7s-close-circle',
message: "Sucessfully saved the Image Sorting"
},{
type: 'success',
timer: 500
});
}
}
});
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
因此,在排除'middleware' => 'auth:api'部件时这可以完美无缺,但我不想仅仅允许在没有任何形式的身份验证的情况下访问我的内部api. …
我有一个 Web 应用程序,其中包含在浏览器上运行的 Javascript 部分。该前端使用多个 HTTP 端点(或多或少是 REST)。前端必须能够区分401和403响应,并且不得接收3xx通常用于人类用户的重定向。
授权是通过简单的表单登录完成的(那里不涉及 Javascript),然后使用会话 cookie(用于“REST”和正常请求)。
WWW-Authenticate标头值的正确值是多少?
来自RFC 7235:“生成 401(未经授权)响应的服务器必须发送包含至少一个质询的 WWW-Authenticate 标头字段。”
该超文本传输协议(HTTP)认证方案注册表没有列出基于表单的身份验证的方案。
也可以看看:
我希望你能解决我的问题.目前,我与服务工作者建立了PWA.它注册成功,但安装有问题.
"caches.open"-promise会导致错误:"TypeError:Request failed at".您可以在Chrome中看到缓存已注册,但为空.我已经检查了缓存网址数千次..
这是我的服务工作者代码
var CACHE_NAME = 'surv-cache-1';
var resourcesToCache = [
'/',
'/index.html',
'/jquery-3.2.1.min.js',
'/pouchdb.min-6.4.1.js',
'/styles/inline.css',
'/scripts/app.js'
];
self.addEventListener('install', function(event) {
event.waitUntil(
// open the app browser cache
caches.open(CACHE_NAME).then(function(cache) {
console.log("Install succesfull");
// add all app assets to the cache
return cache.addAll(resourcesToCache);
}).then(function(out){
console.log(out);
}).catch(function(err){
console.log(err);
})
);
});
self.addEventListener('fetch', function(event) {
event.respondWith(
// try to find corresponding response in the cache
caches.match(event.request)
.then(function(response) {
if (response) {
// cache hit: return cached result
return response;
}
// …Run Code Online (Sandbox Code Playgroud) html basic-authentication browser-cache http-status-code-401 service-worker
我们的网络应用程序具有用户/密码身份验证。它在 Web 服务器上运行,该服务器本身通过 HTTP 基本身份验证进行保护。这只是一个临时解决方案/解决方法。Web 应用程序的身份验证将来就足够了,但目前 Web 服务器基本身份验证根本阻止访问 Web 应用程序。
如果未在应用程序级别进行身份验证,Web 应用程序将返回状态代码 401。标WWW-Authenticate头定义了不同的领域,因此浏览器不会在 Web 服务器和 Web 应用程序身份验证之间混淆:如果我们没有定义不同的领域,则一旦应用程序的 401 到达,浏览器就会丢弃 Web 服务器凭据。
到目前为止,一切都很好。然而,我们的应用程序有自己的身份验证对话框。对于 XHR 请求,我们希望自己处理 401 状态,并且需要阻止浏览器的内部基本身份验证窗口。有一个简单的技巧:只需调整身份验证标头 ( WWW-Authenticate) 即可使用自定义身份验证方法:
WWW-Authenticate: CustomBasic realm="myapp"
Run Code Online (Sandbox Code Playgroud)
Web 服务器返回:
WWW-Authenticate: Basic realm="webserver"
Run Code Online (Sandbox Code Playgroud)
这适用于 Firefox,但不适用于 Chrome。Chrome 在使用时会忽略领域CustomBasic,并丢弃领域“webserver”的凭据(用户/密码),就好像我们根本没有定义领域“myapp”一样。
你知道为什么吗?您是否知道满足以下要求的解决方案:
是的,我知道我们可以通过在应用程序级别使用不同的 HTTP 状态代码并分别处理它们来简单地解决此问题。但如果可能的话,我想保留正确的状态代码 401。这也可能是一个有效的用例,例如,如果您有两个可通过同一主机上的两个不同 URL 路径访问的 Web 应用程序。
authentication webserver http basic-authentication http-status-code-401